نگارش پایدار NET Core 1.1. روز قبل منتشر شد. در ادامه نحوهی ارتقاء پروژههای نگارش 1.0 RTM را به این نگارش بررسی خواهیم کرد.
دریافت نصاب NET Core 1.1.
برای این منظور به آدرس https://www.microsoft.com/net/download/coreمراجعه کرده و فایل NET Core 1.1 SDK - Installer. را دریافت و نصب کنید. برای ظاهر شدن این گزینه باید حالت Current را بجای LTS (Long Term Support) انتخاب کرد:
همچنین در اینجا بسته NET Core 1.1 runtime - Installer. را هم جداگانه میتوان دریافت و نصب کرد.
به روز رسانی فایلهای global.json پروژهها
اولین کاری را که باید پس از نصب نگارشهای جدید NET Core. انجام داد، به روز رسانی شماره نگارش SDK درج شدهی در فایلهای global.json تمام پروژههای موجود است. در غیراینصورت NuGet بستههای جدید مرتبط با آنها را دریافت نخواهد کرد و آنها را در لیست به روز شدهها نخواهید یافت.
برای این منظور خط فرمان را گشوده و دستور ذیل را صادر کنید:
خروجی آن عبارتی است که باید قسمت نگارش SDK درج شود:
اصلاح فایل project.json پس از به روز رسانی فایل global.json
در ادامه باید فایل project.json نیز اندکی ویرایش شود تا شماره platform جدید را نیز درج کند. همچنین محل قرارگیری یکسری از بستهها نیز باید تغییر کنند. در غیر اینصورت با اولین کامپایل Solution چنین خطاهایی را دریافت خواهید کرد:
برای رفع این مشکل، عبارت netcoreapp را در Solution جاری جستجو کرده و آنها را به نحو ذیل تغییر دهید:
یک نکته:اگر هنوز Microsoft.NETCore.App را در لیست dependencies ابتدای فایل project.json دارید، آنرا حذف کنید؛ چون در قسمت frameworks فوق درج شدهاست. در غیراینصورت پیام تکراری بودن این کلید را دریافت خواهید کرد.
پس از طی دو مرحلهی فوق، یکبار پروژه را بسته و مجددا باز کنید.
به روز رسانی بستههای نیوگت پایدار
قبل از هر کاری مطمئن شوید که آخرین بستهی خود NuGet را نیز نصب کردهاید (مهم). به روز رسانیهای اخیر آن بیشتر در جهت سازگاری با پروژههای NET Core. است.
https://dist.nuget.org/index.html
در ادامه برای به روز رسانی بستههای نیوگت، میتوان بر روی گره References کلیک راست کرد و سپس انتخاب گزینهی Manage NuGet Packages و در آخر انتخاب برگهی Updates و انتخاب کتابخانههای به روز شده. این روش برای حالت داشتن چندین پروژه در یک Solution اندکی کند است.
روش سریعتر که تمام پروژهها را نیز به صورت خودکار بررسی و به روز میکند، مراجعه به کنسول پاورشل نیوگت و سپس صدور دستور ذیل است:
اگر در میان کار خطایی را دریافت کردید، این دستور را مجددا اجرا کنید (جهت اطمینان حداقل دوبار این دستور را صادر کنید).
به علاوه پس از پایان کار، یکبار به طور کامل ویژوال استودیو را بسته و مجددا باز کنید. سپس این دستور را یکبار دیگر هم صادر کنید.
به روز رسانی بستههای نیوگت آزمایشی
یکسری از بستهها مانند Microsoft.AspNetCore.Razor.Tools تنها با انتخاب حالت include prereleases ظاهر میشوند که آنها را نیز باید به روز کرد:
تغییر مهم ابزارهای EF Core
در کل Solution عبارت Microsoft.EntityFrameworkCore.Tools را جستجو کرده و با نام جدید Microsoft.EntityFrameworkCore.Tools.DotNet جایگزین کنید.
در آخر یک نمونه فایل project.json به روز شدهی یک برنامهی ASP.NET Core 1.1 را در ذیل مشاهده میکنید:
به روز رسانی پروژهی Test
اگر از MSTest برای انجام آزمونهای واحد استفاده میکنید، تغییرات فایل project.json آن نیز شامل تغییر شماره نگارش NETStandard.Library به 1.6.1 است و همچنین خود بستههای mstest نیز به روز شدهاند. به علاوه قسمت frameworks آن نیز باید همانند مطالبی که عنوان شد، به روز شود:
دریافت نصاب NET Core 1.1.
برای این منظور به آدرس https://www.microsoft.com/net/download/coreمراجعه کرده و فایل NET Core 1.1 SDK - Installer. را دریافت و نصب کنید. برای ظاهر شدن این گزینه باید حالت Current را بجای LTS (Long Term Support) انتخاب کرد:
همچنین در اینجا بسته NET Core 1.1 runtime - Installer. را هم جداگانه میتوان دریافت و نصب کرد.
به روز رسانی فایلهای global.json پروژهها
اولین کاری را که باید پس از نصب نگارشهای جدید NET Core. انجام داد، به روز رسانی شماره نگارش SDK درج شدهی در فایلهای global.json تمام پروژههای موجود است. در غیراینصورت NuGet بستههای جدید مرتبط با آنها را دریافت نخواهد کرد و آنها را در لیست به روز شدهها نخواهید یافت.
برای این منظور خط فرمان را گشوده و دستور ذیل را صادر کنید:
C:\>dotnet --version 1.0.0-preview2-1-003177
{ "projects": [ "src", "test" ], "sdk": { "version": "1.0.0-preview2-1-003177" } }
اصلاح فایل project.json پس از به روز رسانی فایل global.json
در ادامه باید فایل project.json نیز اندکی ویرایش شود تا شماره platform جدید را نیز درج کند. همچنین محل قرارگیری یکسری از بستهها نیز باید تغییر کنند. در غیر اینصورت با اولین کامپایل Solution چنین خطاهایی را دریافت خواهید کرد:
Can not find runtime target for framework '.NETCoreApp,Version=v1.0' compatible with one of the target runtimes: 'win10-x64, win81-x64, win8-x64, win7-x64'. The project does not list one of 'win10-x64, win81-x64, win8-x64, win7-x64' in the 'runtimes' section.
"frameworks": { "netcoreapp1.1": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" } }, "imports": [ "dnxcore50", "portable-net45+win8" ] } },
یک نکته:اگر هنوز Microsoft.NETCore.App را در لیست dependencies ابتدای فایل project.json دارید، آنرا حذف کنید؛ چون در قسمت frameworks فوق درج شدهاست. در غیراینصورت پیام تکراری بودن این کلید را دریافت خواهید کرد.
پس از طی دو مرحلهی فوق، یکبار پروژه را بسته و مجددا باز کنید.
به روز رسانی بستههای نیوگت پایدار
قبل از هر کاری مطمئن شوید که آخرین بستهی خود NuGet را نیز نصب کردهاید (مهم). به روز رسانیهای اخیر آن بیشتر در جهت سازگاری با پروژههای NET Core. است.
https://dist.nuget.org/index.html
در ادامه برای به روز رسانی بستههای نیوگت، میتوان بر روی گره References کلیک راست کرد و سپس انتخاب گزینهی Manage NuGet Packages و در آخر انتخاب برگهی Updates و انتخاب کتابخانههای به روز شده. این روش برای حالت داشتن چندین پروژه در یک Solution اندکی کند است.
روش سریعتر که تمام پروژهها را نیز به صورت خودکار بررسی و به روز میکند، مراجعه به کنسول پاورشل نیوگت و سپس صدور دستور ذیل است:
PM> Update-Package
به علاوه پس از پایان کار، یکبار به طور کامل ویژوال استودیو را بسته و مجددا باز کنید. سپس این دستور را یکبار دیگر هم صادر کنید.
به روز رسانی بستههای نیوگت آزمایشی
یکسری از بستهها مانند Microsoft.AspNetCore.Razor.Tools تنها با انتخاب حالت include prereleases ظاهر میشوند که آنها را نیز باید به روز کرد:
تغییر مهم ابزارهای EF Core
در کل Solution عبارت Microsoft.EntityFrameworkCore.Tools را جستجو کرده و با نام جدید Microsoft.EntityFrameworkCore.Tools.DotNet جایگزین کنید.
در آخر یک نمونه فایل project.json به روز شدهی یک برنامهی ASP.NET Core 1.1 را در ذیل مشاهده میکنید:
{ "dependencies": { "Microsoft.AspNetCore.Diagnostics": "1.1.0", "Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore": "1.1.0", "Microsoft.AspNetCore.Http.Extensions": "1.1.0", "Microsoft.AspNetCore.Mvc": "1.1.0", "Microsoft.AspNetCore.Mvc.Core": "1.1.0", "Microsoft.AspNetCore.Mvc.TagHelpers": "1.1.0", "Microsoft.AspNetCore.Razor.Runtime": "1.1.0", "Microsoft.AspNetCore.Razor.Tools": { "version": "1.1.0-preview4-final", "type": "build" }, "Microsoft.AspNetCore.Server.IISIntegration": "1.1.0", "Microsoft.AspNetCore.Server.Kestrel": "1.1.0", "Microsoft.AspNetCore.Session": "1.1.0", "Microsoft.AspNetCore.SpaServices": "1.0.0-beta-000019", "Microsoft.AspNetCore.StaticFiles": "1.1.0", "Microsoft.EntityFrameworkCore": "1.1.0", "Microsoft.EntityFrameworkCore.InMemory": "1.1.0", "Microsoft.EntityFrameworkCore.Tools.DotNet": { "version": "1.1.0-preview4-final", "type": "build" }, "Microsoft.Extensions.Configuration.Binder": "1.1.0", "Microsoft.Extensions.Configuration.Json": "1.1.0", "Microsoft.Extensions.Logging.Console": "1.1.0", "Microsoft.Extensions.Logging.Debug": "1.1.0", "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { "version": "1.1.0-preview4-final", "type": "build" }, "Microsoft.VisualStudio.Web.CodeGenerators.Mvc": { "version": "1.1.0-preview4-final", "type": "build" } }, "tools": { "BundlerMinifier.Core": "2.2.301", "Microsoft.AspNetCore.Razor.Tools": "1.1.0-preview4-final", "Microsoft.VisualStudio.Web.CodeGeneration.Tools": { "version": "1.1.0-preview4-final", "imports": [ "portable-net45+win8" ] }, "Microsoft.EntityFrameworkCore.Tools.DotNet": { "version": "1.1.0-preview4-final", "imports": [ "portable-net45+win8" ] }, "Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.1.0-preview4-final" }, "frameworks": { "netcoreapp1.1": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" } }, "imports": [ "dnxcore50", "portable-net45+win8" ] } }, "buildOptions": { "emitEntryPoint": true, "preserveCompilationContext": true }, "runtimeOptions": { "configProperties": { "System.GC.Server": true } }, "publishOptions": { "include": [ "wwwroot", "Features", "appsettings.json", "web.config" ] }, "configurations": { "Release": { "buildOptions": { "optimize": true, "platform": "anycpu" } } }, "scripts": { "precompile": [ "dotnet bundle" ], "prepublish": [ //"bower install" ], "postpublish": [ "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%" ] } }
به روز رسانی پروژهی Test
اگر از MSTest برای انجام آزمونهای واحد استفاده میکنید، تغییرات فایل project.json آن نیز شامل تغییر شماره نگارش NETStandard.Library به 1.6.1 است و همچنین خود بستههای mstest نیز به روز شدهاند. به علاوه قسمت frameworks آن نیز باید همانند مطالبی که عنوان شد، به روز شود:
{ "version": "1.0.0-*", "testRunner": "mstest", "dependencies": { "Microsoft.EntityFrameworkCore": "1.1.0", "Microsoft.EntityFrameworkCore.InMemory": "1.1.0", "NETStandard.Library": "1.6.1", "dotnet-test-mstest": "1.1.2-preview", "MSTest.TestFramework": "1.0.6-preview" }, "frameworks": { "netcoreapp1.1": { "dependencies": { "Microsoft.NETCore.App": { "type": "platform", "version": "1.1.0" } }, "imports": [ "dnxcore50", "portable-net45+win8" ] } } }