3.Visual Studio 2017 15.6 منتشر شد
These are the customer-reported issues addressed in this release:
- Esc key doesn't close Peek Definition Window.
-
wpp.targets
file execution not working after update to version 15.6. - Project loaded via File->Open->CMake throws exception and CMake cache is not generated..
- Version 15.6 update crashes Xamarin code with NullReferenceException with next scenario.
- XCode Tools installation fails after version 15.6 update.
- Anaconda 5.0.0 Completion DB is not up to date and hitting refresh fails.
- Cannot run NUnit tests after version 15.6.1 update.
- Visual Studio 2017 fails to launch from the command line when launched using 8.3 file name path.
- Version 15.6.0 breaks when VisualStudio\Telemetry\TurnOffSwitch is set to 0.
- Visual Studio Community 2017 auto closes after version 15.6 update..
- CMake generation never stops after version 15.6.1 update.
- Opening a solution with tests, and clicking any toolbar item in Test Explorer causes VS to crash.
حجم تقریبی بروزرسانی از نسخه 15.6.2 به 15.6.3 برابر 1.47GB میباشد
در مورد تنظیمات دستی IIS Express که یک نسخهی سبک IIS 7.5 قابل اجرا بر روی ویندوز XP نیز میباشد، پیشتر در این سایت مطلبی را مطالعه کردهاید (+). اکنون که سرویس پک یک VS 2010 ارائه شده (+)، دیگر نیازی به آن تنظیمات دستی نبوده و امکان استفاده یکپارچه و خودکار از این نسخهی ساده شده IIS 7.5 به شرح زیر وجود دارد:
ابتدا نیاز است تا هر دو مورد سرویس پک یک VS 2010 و همچنین IIS Express به صورت جداگانه نصب شوند. سپس:
الف) ابتدا از منوی Tools ، گزینهی Options را انتخاب کنید. در صفحهی باز شده در قسمت Projects and solutions ذیل گزینهی Web projects نیاز است تا یکبار مجوز استفاده از IIS express صادر شود:
ب) اکنون بر روی نام پروژه در Solution explorer موجود در Visual studio کلیک راست کرده و گزینهی Use IIS Express را انتخاب نمائید:
به این صورت تنظیمات لازم به صورت خودکار اعمال خواهد گردید و جهت مشاهده آنها میتوان به خواص پروژه، برگهی Web مراجعه کرد:
نکته مهم:
نسخهی RTM ویژوال استودیوی 2010 تنظیمات فوق را که در تصویر ملاحظه میکنید، ندارد. به عبارتی پس از اعمال تغییرات فوق باید دقت داشت سایرینی که قرار است از پروژهی شما استفاده کنند نیز باید پیشنیازهای ذکر شده را رعایت نمایند و یا جهت توزیع سورس میتوان مجددا بر روی نام پروژه کلیک راست کرده و اینبار گزینهی Use Visual Studio Development Server قدیمی را انتخاب کرد.
- برای حالت database first نیاز به VS 2013 دارید تا از کلیه امکانات EF 6 استفاده کنید (یا باید به روز رسانی خاصی را برای VS 2012 نصب کنید). حالت Code first مستقل است از IDE (یک مزیت دیگر).
Entity Framework Designer همراه با VS 2012 فقط از EF 5 پشتیبانی میکند (در حالت پیش فرض) و از تغییرات انجام شده در EF 6 آگاه نیست. به همین جهت اگر با VS 2012 بخواهید با EF6 کار کنید (در حالت database first) باز هم همان اسمبلی قدیمی System.Data.Entity.dll را مورد استفاده قرار میدهد که در EF 6 اصلا کاربردی ندارد و با آن یکی شده است.
البته در کل میتونید با VS 2012 هم در حالت database first با EF 6 کار کنید ولی نیاز به یک سری تغییرات دستی خواهید داشت (EF قدیمی و همچنین اسمبلی اضافی یاد شده را باید دستی حذف کنید) و به علاوه از بهبودهای جدید آن (در حالت پیش فرض و بدون به روز رسانی) محروم خواهید بود.
Entity Framework Designer سورس باز نیست (برخلاف هسته EF) و جزئی از VS.NET است. قرار است در آینده این افزونه را هم سورس باز کنند تا بتوانند مستقل از چرخه طول عمر VS.NET، خود EF Database first را نیز به روز کنند.
ولی در کل اگر از Code first استفاده میکنید، EF6 حتی با VS 2010 هم سازگار است.
- زمانیکه با یک ORM کار میکنید (فرقی نمیکند به چه اسمی)، لایه DAL همان ORM هست. (دست به اختراع لایههای اضافی نزنید)
تعدادی از ابزارهایی که من از آنها در VS.Net 2008 استفاده میکنم اخیرا جهت VS2010 نیز به روز رسانی شدهاند که لیست آنها در ادامه ذکر خواهد شد:
الف) افزونهای برای مرتب سازی کدهای نوشته شده:
Regionerate : + و +
ب) افزونهای جهت کار با SVN به کمک امکانات TortoiseSVN
VisualSvn : + و +
ج) افزونهای که بدون آن جدا کد نویسی در VS.Net لطفی ندارد!
Resharper : + و +
د) تمهای مشکی جدید VS.Net 2010 جهت دوام آوردن بیشتر در تعداد ساعات بالای کاری با این محصول و خستگی کمتر چشم
New adapted themes
ه) ابزاری جهت code obfuscation
Eazfuscator : + و +
- اجرا کردن ویندوز ۸ از روی USB | mymicrosoftlife.net
- نسخه ۳ پلتفورم پراویو اینترنت اکسپلورر ۱۰ | mymicrosoftlife.net
- یادداشت من در ماهنامه بانکداری الکترونیک | itsec.persianblog.ir
- //Build/–Windows 8 Thoughts | www.amazedsaint.com
- A bad picture is worth a thousand long discussions. | dougseven.com
- C# 5: Links, News and Resources (1) | ajlopez.wordpress.com
- Creating Data-driven web apps using ASP.NET 4.5 Web Forms | www.techbubbles.com
- Data Schema Comparison in Visual Studio 2010 | dailydotnettips.com
- Demystifying the Windows 8 Grid Application | weblogs.asp.net
- Developing for WinRT and Windows8 – Basic Concepts | www.amazedsaint.com
- Download and contribute Metro style app samples | blogs.msdn.com
- I know what you’re thinking, and you’re wrong. | dougseven.com
- Metro .NET Framework Profile (“Windows Tailored”) | blogs.microsoft.co.il
- New HTML Editor feature in Visual Studio 11 Developer Preview | blogs.msdn.com
- Real Native WinRT Development | www.interact-sw.co.uk
- The New Team Explorer in TFS 11 | blogs.msdn.com
- Under the Covers of WinRT Using C++ | blogs.microsoft.co.il
- Visual Studio 11 Developer Preview: Visual Basic (VB) Call Hierarchy | blogs.msdn.com
- Visual Studio BUILD sessions and Tips & Tricks Cheat Sheet | blogs.msdn.com
- WebMatrix 2 Beta - Released! | blogs.iis.net
- Win32: “The Reports of my death are greatly exaggerated.” | getwired.com
- WinRT and .NET | www.lhotka.net
- WinRT and .NET in Windows 8 | blogs.microsoft.co.il
- WinRT and business apps | www.lhotka.net
- WinRT vs. Silverlight - Part 5 - Defining default style template | www.silverlightshow.net
- WPF 4.5 – Part 1 : Asynchronous data validation | www.jonathanantoine.com
- WPF 4.5 – Part 2 : Improved WeakEventManager | www.jonathanantoine.com
- جزئیات نحوه پیاده سازی یک Storage Provider برای ASP.NET Identity
- تشریح اینترفیس هایی که باید پیاده سازی شوند، و نحوه استفاده از آنها در ASP.NET Identity
- ایجاد یک دیتابیس MySQL روی Windows Azure
- نحوه استفاده از یک ابزار کلاینت (MySQL Workbench) برای مدیریت دیتابیس مذکور
- نحوه جایگزینی پیاده سازی سفارشی با نسخه پیش فرض در یک اپلیکیشن ASP.NET MVC
پیاده سازی یک Storage Provider سفارشی برای ASP.NET Identity
- <UserStore<TUser
- IdentityUser
- <RoleStore<TRole
- IdentityRole
Roles
در مخزن پیش فرض ASP.NET Identity EntityFramework کلاسهای بیشتری برای موجودیتها مشاهده میکنید.
- IdentityUserClaim
- IdentityUserLogin
- IdentityUserRole
public Task<IList<Claim>> GetClaimsAsync(IdentityUser user) { ClaimsIdentity identity = userClaimsTable.FindByUserId(user.Id); return Task.FromResult<IList<Claim>>(identity.Claims.ToList()); }
public class IdentityUser : IUser { public IdentityUser(){...} public IdentityUser(string userName) (){...} public string Id { get; set; } public string UserName { get; set; } public string PasswordHash { get; set; } public string SecurityStamp { get; set; } }
public class UserStore : IUserStore<IdentityUser>, IUserClaimStore<IdentityUser>, IUserLoginStore<IdentityUser>, IUserRoleStore<IdentityUser>, IUserPasswordStore<IdentityUser> { public UserStore(){...} public Task CreateAsync(IdentityUser user){...} public Task<IdentityUser> FindByIdAsync(string userId){...} ... }
public class IdentityRole : IRole { public IdentityRole(){...} public IdentityRole(string roleName) (){...} public string Id { get; set; } public string Name { get; set; } }
public class RoleStore : IRoleStore<IdentityRole> { public RoleStore(){...} public Task CreateAsync(IdentityRole role){...} public Task<IdentityRole> FindByIdAsync(string roleId){...} .... }
- MySQLDatabase: این کلاس اتصال دیتابیس MySql و کوئریها را کپسوله میکند. کلاسهای UserStore و RoleStore توسط نمونه ای از این کلاس وهله سازی میشوند.
- RoleTable: این کلاس جدول Roles و عملیات CRUD مربوط به آن را کپسوله میکند.
- UserClaimsTable: این کلاس جدول UserClaims و عملیات CRUD مربوط به آن را کپسوله میکند.
- UserLoginsTable: این کلاس جدول UserLogins و عملیات CRUD مربوط به آن را کپسوله میکند.
- UserRolesTable: این کلاس جدول UserRoles و عملیات CRUD مربوطه به آن را کپسوله میکند.
- UserTable: این کلاس جدول Users و عملیات CRUD مربوط به آن را کپسوله میکند.
ایجاد یک دیتابیس MySQL روی Windows Azure
در ویزارد Choose Add-on به سمت پایین اسکرول کنید و گزینه ClearDB MySQL Database را انتخاب کنید. سپس به مرحله بعد بروید.
4. راهکار Free بصورت پیش فرض انتخاب شده، همین گزینه را انتخاب کنید و نام دیتابیس را به IdentityMySQLDatabase تغییر دهید. نزدیکترین ناحیه (region) به خود را انتخاب کنید و به مرحله بعد بروید.
5. روی علامت checkmark کلیک کنید تا دیتابیس شما ایجاد شود. پس از آنکه دیتابیس شما ساخته شد میتوانید از قسمت ADD-ONS آن را مدیریت کنید.
6. همانطور که در تصویر بالا میبینید، میتوانید اطلاعات اتصال دیتابیس (connection info) را از پایین صفحه دریافت کنید.
7. اطلاعات اتصال را با کلیک کردن روی دکمه مجاور کپی کنید تا بعدا در اپلیکیشن MVC خود از آن استفاده کنیم.
ایجاد جداول ASP.NET Identity در یک دیتابیس MySQL
CREATE TABLE `IdentityMySQLDatabase`.`users` ( `Id` VARCHAR(45) NOT NULL, `UserName` VARCHAR(45) NULL, `PasswordHash` VARCHAR(100) NULL, `SecurityStamp` VARCHAR(45) NULL, PRIMARY KEY (`id`)); CREATE TABLE `IdentityMySQLDatabase`.`roles` ( `Id` VARCHAR(45) NOT NULL, `Name` VARCHAR(45) NULL, PRIMARY KEY (`Id`)); CREATE TABLE `IdentityMySQLDatabase`.`userclaims` ( `Id` INT NOT NULL AUTO_INCREMENT, `UserId` VARCHAR(45) NULL, `ClaimType` VARCHAR(100) NULL, `ClaimValue` VARCHAR(100) NULL, PRIMARY KEY (`Id`), FOREIGN KEY (`UserId`) REFERENCES `IdentityMySQLDatabase`.`users` (`Id`) on delete cascade); CREATE TABLE `IdentityMySQLDatabase`.`userlogins` ( `UserId` VARCHAR(45) NOT NULL, `ProviderKey` VARCHAR(100) NULL, `LoginProvider` VARCHAR(100) NULL, FOREIGN KEY (`UserId`) REFERENCES `IdentityMySQLDatabase`.`users` (`Id`) on delete cascade); CREATE TABLE `IdentityMySQLDatabase`.`userroles` ( `UserId` VARCHAR(45) NOT NULL, `RoleId` VARCHAR(45) NOT NULL, PRIMARY KEY (`UserId`, `RoleId`), FOREIGN KEY (`UserId`) REFERENCES `IdentityMySQLDatabase`.`users` (`Id`) on delete cascade on update cascade, FOREIGN KEY (`RoleId`) REFERENCES `IdentityMySQLDatabase`.`roles` (`Id`) on delete cascade on update cascade);
ایجاد یک اپلیکیشن ASP.NET MVC و پیکربندی آن برای استفاده از MySQL Provider
6. در پنجره New ASP.NET Project قالب MVC را انتخاب کنید و تنظیمات پیش فرض را بپذیرید.
7. در پنجره Solution Explorer روی پروژه IdentityMySQLDemo کلیک راست کرده و Manage NuGet Packages را انتخاب کنید. در قسمت جستجوی دیالوگ باز شده عبارت "Identity.EntityFramework" را وارد کنید. در لیست نتایج این پکیج را انتخاب کرده و آن را حذف (Uninstall) کنید. پیغامی مبنی بر حذف وابستگیها باید دریافت کنید که مربوط به پکیج EntityFramework است، گزینه Yes را انتخاب کنید. از آنجا که کاری با پیاده سازی فرض نخواهیم داشت، این پکیجها را حذف میکنیم.
8. روی پروژه IdentityMySQLDemo کلیک راست کرده و Add, Reference, Solution, Projects را انتخاب کنید. در دیالوگ باز شده پروژه AspNet.Identity.MySQL را انتخاب کرده و OK کنید.
9. در پروژه IdentityMySQLDemo پوشه Models را پیدا کرده و کلاس IdentityModels.cs را حذف کنید.
10. در پروژه IdentityMySQLDemo تمام ارجاعات ";using Microsoft.AspNet.Identity.EntityFramework" را با ";using AspNet.Identity.MySQL" جایگزین کنید.
11. در پروژه IdentityMySQLDemo تمام ارجاعات به کلاس "ApplicationUser" را با "IdentityUser" جایگزین کنید.
12. کنترلر Account را باز کنید و متد سازنده آنرا مطابق لیست زیر تغییر دهید.
public AccountController() : this(new UserManager<IdentityUser>(new UserStore(new MySQLDatabase()))) { }
13. فایل web.config را باز کنید و رشته اتصال DefaultConnection را مطابق لیست زیر تغییر دهید.
<add name="DefaultConnection" connectionString="Database=IdentityMySQLDatabase;Data Source=<DataSource>;User Id=<UserID>;Password=<Password>" providerName="MySql.Data.MySqlClient" />
مقادیر <DataSource>, <UserId> و <Password> را با اطلاعات دیتابیس خود جایگزین کنید.
اجرای اپلیکیشن و اتصال به دیتابیس MySQL
5. در این مرحله کاربر جدید باید ایجاد شده و وارد سایت شود.
6. به ابزار MySQL Workbench بروید و محتوای جداول IdentityMySQLDatabase را بررسی کنید. جدول users را باز کنید و اطلاعات کاربر جدید را بررسی نمایید.
برای ساده نگاه داشتن این مقاله از بررسی تمام کدهای لازم خودداری شده، اما اگر مراحل را دنبال کنید و سورس کد نمونه را دریافت و بررسی کنید خواهید دید که پیاده سازی تامین کنندگان سفارشی برای ASP.NET Identity کار نسبتا ساده ای است.