در NET Core 3x. دیگر بستههای نیوگت Shared framework به صورت جداگانه تولید و توزیع نمیشوند
فرض کنید کتابخانهای را مخصوص ASP.NET Core 2x تولید کردهاید و این کتابخانه، وابستگی را به بستهی Microsoft.AspNetCore.Mvc.Core دارد و اکنون قصد دارید نگارش 3x آنرا تهیه کنید. اگر
به نیوگت مراجعه کنید، آخرین نگارشی که از آن موجود است، 2.2.5 است و دیگر هیچ خبری، حتی از نگارشهای preview مربوط به 3x، در اینجا وجود ندارد. علت اینجا است که تیم ASP.NET Core
تصمیم گرفتهاست، دیگر بستههای نیوگت زیر مجموعهی Microsoft.AspNetCore.App را به صورت جداگانه تولید و منتشر نکند (و دیگر آخرین نگارشهای آنها را در سایت نیوگت نخواهید یافت).
همچنین نحوهی تعریف متاپکیج Microsoft.AspNetCore.App اینبار از طریق PackageReferenceها صورت نمیگیرد و بر اساس معرفی FrameworkReferenceها انجام شدهاست:
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
به همین جهت فایل csproj نگارش 3x، دیگر شامل Microsoft.AspNetCore.App نیست (حتی تعریف FrameworkReference فوق را نیز به همراه ندارد). علت اینجا است که اگر TargetFramework پروژهی وب، به netcoreapp3.0 اشاره کند، به صورت خودکار میتوانید از آخرین نگارش Microsoft.AspNetCore.App نصب شدهی توسط SDK، در برنامهی خود استفاده کنید و نیاز به هیچ نوع تنظیم اضافهتری ندارد و ذکر netcoreapp3.0، به معنای استفادهی خودکار از تمام بستههای نیوگت به همراه Shared framework
همراه با SDK جاری است. بدیهی است هر وابستگی دیگری که در لیست Microsoft.AspNetCore.App
قرار نداشته باشد، باید همانند سابق نصب شود.
یک نکته: تمام بستههای جدید تولید شده، بر اساس
netcoreapp3.0 تهیه شدهاند؛ منهای بستههای Microsoft.Extensions و همچنین Entity Framework Core که هنوز بر پایهی NET Standard. تهیه میشوند. بنابراین فایل پروژهی یک class library که بخواهد از بستههای مبتنی بر netcoreapp3.0 استفاده کند و همچنین بستههای Microsoft.AspNetCore.App را نیز لحاظ کند، چنین شکلی را پیدا میکند (و TargetFramework آن دیگر برای مثال netstandard2.0 نمیتواند باشد):
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp3.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App" />
</ItemGroup>
</Project>