سلسلهای از پستهای مربوط به تغییر نسخهی داتنتکور از 2.2 به 3.1 منتشر خواهد شد. هر پست به صورت کوتاه به یکی از تغییرات اشاره خواهد داشت. بنابراین تلاش میشود تا ضمن حفظ سادگی در بیان مطالب، کوتاهی و Right the point بودن آنها نیز حفظ شود. نکته آنکه مایکروسافت دیگر از نسخهی 2.2 پشتیبانی نمیکند!
در این قسمت، تغییراتی که در فایل پروژه csproj یا vbproj ایجاد شدهاند، مرور خواهیم کرد:
در نسخه 3.1 پکیجهای زیاد NuGet که پیش از این در نسخه 2.2 بودند، در نسخه 3.1 حذف شدهاند و بنابراین میبایست از فایل پروژه نیز حذف شوند. فرض کنید که کد زیر، نمونهای از یک فایل پروژه در نسخه 2.2 باشد:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel> </PropertyGroup>
<ItemGroup> <PackageReference Include="Microsoft.AspNetCore.App"/> <PackageReference Include="Microsoft.AspNetCore.Razor.Design" Version="2.2.0" PrivateAssets="All" /> </ItemGroup> </Project>
کد بالا میبایست به صورت زیر بازنویسی شود:
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp3.0</TargetFramework> </PropertyGroup> </Project>
به عبارت دیگر، عنصر <AspNetCoreHostingModel> حذف است. چراکه اگر به صورت پیشفرض پروژه در حالت InProcess اجرا شود، نیازی به درج این تگ نیست.
چرا تگ Microsoft.AspNetCore.App حذف شده است؟
پروژههایی که SDK مربوط به Microsoft.NET.Sdk.Web را هدف قرار میدهند، دیگر نیازی به درج این تگ ندارند چرا که به سادگی این موضوع در آن پروژهها وجود خواهد داشت. اما اگر SDK پروژهی شما به صورت Microsoft.Net.Sdk باشد، میبایست به Microsoft.ASpNetCore.App رفرنس بدهید.