ارتقاء به ASP.NET Core 2.0 - معرفی بسته‌ی Microsoft.AspNetCore.All
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: چهار دقیقه

یکی از مهم‌ترین تغییرات ASP.NET Core 2.0، نسبت به نگارش‌های قبلی آن، ارائه‌ی یک «متا پکیج» جدید به نام Microsoft.AspNetCore.All است. این بسته به همراه تمام وابستگی‌های مورد نیاز جهت توسعه‌ی برنامه‌های ASP.NET Core 2.0 است؛ این «تمام» شامل تمام بسته‌های Razor، بسته‌های MVC، بسته‌های EF Core و غیره است. به این ترتیب به روز رسانی بسته‌های وابسته‌ی به هم، بسیار ساده خواهد شد و همچنین به فایل‌های csproj بسیار خلوت و قابل مدیریتی، خواهیم رسید.


بسته‌ی Microsoft.AspNetCore.All فقط مخصوص پروژه‌های netcoreapp2.0 است

این «متا پکیج» تنها در پروژه‌هایی که TargetFramework آن‌ها به netcoreapp2.0 تنظیم شده‌است، قابل استفاده می‌باشد:
 <TargetFramework>netcoreapp2.0</TargetFramework>
اگر TargetFramework تنظیمی netstandard2.0 باشد، قادر به استفاده‌ی از آن نخواهید بود. در این حالت باید مانند سابق، تک تک بسته‌های مورد نیاز را در فایل csproj به صورت جداگانه‌ای تعریف کنید.


نحوه‌ی به روز رسانی پروژه‌ها جهت استفاده‌ی از Microsoft.AspNetCore.All

پیش از ناقص کردن برنامه و حذف بسته‌های نیوگتی که نباید از فایل csproj حذف شوند، ابتدا باید لیستی را که توسط «متا پکیج» Microsoft.AspNetCore.All ارائه می‌شود، بررسی کرد. این لیست را پس از نصب SDK جدید، در آدرس ذیل می‌توانید مشاهده کنید:
 C:\Program Files\dotnet\store\x64\netcoreapp2.0


روش دیگر یافتن این لیست، مراجعه‌ی به سایت نیوگت و بررسی قسمت dependencies آدرس https://www.nuget.org/packages/Microsoft.AspNetCore.All است:


سپس به فایل csproj ایی که دارای TargetFramework مساوی netcoreapp2.0 است مراجعه کرده و هر کدام از بسته‌هایی را که در این لیست قرار دارند ... حذف کنید. در آخر بجای تمام این مداخل حذف شده، یک مدخل کلی ذیل را تعریف کنید:
<ItemGroup>
    <PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
</ItemGroup>


سؤال: آیا استفاده‌ی از بسته‌ی Microsoft.AspNetCore.All، ارائه‌ی نهایی برنامه را حجیم نمی‌کند؟

اگر به مسیر dotnet\store ایی که پیشتر عنوان شد مراجعه کنید، در اینجا بیش از 180 بسته را خواهید یافت. در این حالت شاید به نظر برسد که حجم نهایی قابل توزیع برنامه‌های ASP.NET Core با استفاده از تک مدخل Microsoft.AspNetCore.All بسیار بالا خواهد رفت. اما ... خیر.
NET Core 2.0. به همراه ویژگی جدیدی است به نام Runtime store. هدف از آن، پیش نصب بسته‌ها بر روی سیستم جاری، در یک مکان مرکزی است تا دیگر در حین توزیع نهایی برنامه، نیازی به توزیع مجدد آن‌ها نباشد. به همین جهت، به آن می‌توان شبیه به مفهوم پیشین Global assembly cache یا GAC مخصوص NET Core. نگاه کرد. به علاوه تمام این بسته‌ها ngen شده و سرعت آغاز و اجرای برنامه‌ها را بهبود می‌بخشند.
زمانیکه SDK جدید NET Core 2.0. را نصب می‌کنید، تمام بسته‌های مورد نیاز آن، در مسیر مرکزی C:\Program Files\dotnet\store نصب می‌شوند. بنابراین سیستمی که به همراه این SDK باشد، حتما حاوی تمام وابستگی‌های ذکر شده‌ی در متاپکیج Microsoft.AspNetCore.All نیز خواهد بود و در این حالت نیازی به توزیع مجدد آن‌ها نیست.
پس از آن مهم‌ترین تفاوتی را که مشاهده خواهید کرد، کاهش حجم نهایی برنامه‌های ASP.NET Core 2.0 نسبت به نگارش‌های 1x است. برای آزمایش، یک برنامه‌ی ASP.NET Core 1.x و سپس یک برنامه‌ی ساده‌ی ASP.NET Core 2.x را publish کنید.
این تصویر، پوشه‌ی نهایی قابل توزیع یک برنامه‌ی ASP.NET Core 1.x را پس از publish نمایش می‌دهد:

و این تصویر، پوشه‌ی نهایی قابل توزیع یک برنامه‌ی ASP.NET Core 2.x را پس از publish نمایش می‌دهد:

در این حالت پوشه‌ی نهایی نگارش 1x شامل 94 آیتم و پوشه‌ی نهایی نگارش 2x شامل 13 آیتم است. یعنی حجم نهایی را که باید ارائه داد، به شدت کاهش یافته‌است.


بالا رفتن کارآیی تازه واردان به دنیای ASP.NET Core با متاپکیج جدید Microsoft.AspNetCore.All

یکی از مشکلاتی که به همراه کار با ASP.NET Core 1.x وجود دارد، مشخص نبودن محل قرارگیری ویژگی‌های جدید و بسته‌های مرتبط با آن‌ها است. همچنین به ازای هر ویژگی جدید باید یک بسته‌ی نیوگت جدید را نصب کرد و عموما یافتن این‌ها و یا دانستن وجود آن‌ها، کار دشواری می‌باشد.
اما زمانیکه متابسته‌ی Microsoft.AspNetCore.All به قسمت ارجاعات پروژه اضافه می‌شود، در آغاز کار برنامه، سیستم IntelliSense آن‌ها را پردازش کرده و بلافاصله در اختیار برنامه نویس قرار می‌گیرند. این قابلیت حتی در VSCode نیز همانند Visual Studio کار می‌کند و توسعه دهنده‌ها بلافاصله IntelliSense بسیار کاملی را از قابلیت‌های موجود در اختیار خواهند داشت؛ به همراه ویژگی‌های تکمیلی دیگری مانند افزودن و یا اصلاح ساده‌تر فضاهای نام مرتبط.
  • #
    ‫۷ سال و ۱ ماه قبل، جمعه ۲۷ مرداد ۱۳۹۶، ساعت ۰۰:۱۸
    با سلام؛ تمامی مواردی که در بالا ذکر شد را انجام دادم. منتها error‌های زیر را دریافت کردم:

    در واقع همه‌ی پکیج‌ها به درستی Restore نشده‌اند. لطفا راهنمایی بفرمایید.

    • #
      ‫۷ سال و ۱ ماه قبل، جمعه ۲۷ مرداد ۱۳۹۶، ساعت ۰۱:۰۵
      - ابتدا آخرین نگارش SDK را دریافت و نصب کنید.
      - سپس به خط فرمان مراجعه کرده و دستور dotnet restore را در ریشه‌ی پروژه صادر کنید. اگر این دستور بدون مشکل به پایان رسید، یعنی نگارش فعلی ویژوال استودیوی شما با نگارش SDK نصب شده سازگاری ندارد و «باید» به روز شود (حداقل نگارش «15.3» آن‌را باید نصب کنید).
      راه حل بهتر: از VSCode استفاده کنید تا نگران به روز رسانی‌های ویژوال استودیو نباشید. نیازی به دریافت حجم‌های بالای آن‌را نداشته باشید و همچنین بلافاصله پس از نصب SDK جدید، قادر به استفاده‌ی از نگارش‌های جدید NET Core. باشید.  
      • #
        ‫۷ سال و ۱ ماه قبل، جمعه ۲۷ مرداد ۱۳۹۶، ساعت ۰۱:۲۶
        ممنون از پاسخگویی،
        چون عادت به استفاده از ویژوال استودیو رو دارم هرکاری کردم نتونستم آپدیت کنم.هر بار که Installer ویژوال استودیو رو باز کردم این Error دریافت کردم.آیا روش دیگری برای بروز رسانی آن وجود دارد یا خیر؟

        • #
          ‫۷ سال و ۱ ماه قبل، جمعه ۲۷ مرداد ۱۳۹۶، ساعت ۰۲:۱۹
          این دستور را اجرا کنید (جهت اصلاح VS معیوب نصب شده):
          %ProgramFiles(x86)%\Microsoft Visual Studio\Installer\resources\app\layout\InstallCleanup.exe -i
          - و یا
          این موارد را باید طی کنید:
          - محتوای دو پوشه‌ی زیر را حذف کنید (درصورت وجود). این مسیرها را در پنجره‌ی run ویندوز وارد کرده و سپس enter کنید:
          %LocalAppData%\Microsoft\VisualStudio\Packages\Channels
          %AppData%\Microsoft\VisualStudio\Packages_Channels
          - سپس نصاب را هم از پوشه‌ی ذیل حذف کنید:
          C:\Program Files (x86)\Microsoft Visual Studio\Installer
          - vs_professional.exe جدید را مجددا دریافت و اجرا کنید.
          • #
            ‫۷ سال قبل، جمعه ۲۴ شهریور ۱۳۹۶، ساعت ۲۲:۴۶
            به نظر میرسد آدرس پوشه دوم باید به صورت زیر اصلاح شود:
            %AppData%\Microsoft\VisualStudio\Packages\_Channels

  • #
    ‫۷ سال و ۱ ماه قبل، شنبه ۲۸ مرداد ۱۳۹۶، ساعت ۱۸:۴۴
    بعد از ارتقاء به ASP.Net Core 2.0 در برنامه‌های موجود از قبل با نسخه ASP.Net Core 1.1 با مشکل روبرو شدم 
     Error Duplicate 'Content' items were included


    که با تغییر فایل cproj و افزودن <EnableDefaultContentItems>false</EnableDefaultContentItems> مشکل برطرف شد


     دلیل این پیغام چیست ؟
    • #
      ‫۷ سال و ۱ ماه قبل، شنبه ۲۸ مرداد ۱۳۹۶، ساعت ۱۹:۳۱
      Default Compile Item Values in the the .NET Core SDK : لیستی که در این ماخذ ذکر شده به صورت خودکار به پروژه اضافه می‌شوند. اگر این لیست را مجددا به فایل csproj اضافه کنید، دوبار به پروژه الحاق خواهند شد که سبب بروز خطای فوق می‌گردد. برای مثال نیازی به ذکر یک چنین تنظیمی دیگر نیست و ذکر مجدد آن خطای محتوای تکراری را ایجاد می‌کند:
      <ItemGroup>
          <Content Include="wwwroot\**" />
      </ItemGroup>

      • #
        ‫۷ سال و ۱ ماه قبل، شنبه ۲۸ مرداد ۱۳۹۶، ساعت ۲۲:۱۶
        در VS Code هم با این خطا مواجه شدم. در بقیه‌ی فایل‌های پروژه نیز به همین صورت اکثر reference‌ها رو نمیشناسد.همین خطا رو توی Visual Studio نیز داشتم البته هنوز آپدیت نکردم.

        • #
          ‫۷ سال و ۱ ماه قبل، شنبه ۲۸ مرداد ۱۳۹۶، ساعت ۲۳:۲۷
          افزونه‌ی #C مخصوص VSCode دقیقا همان روزی که NET Core 2.0. ارائه شد، به روز شده‌است. بنابراین پس از نصب SDK جدید، یکبار VSCode را بسته، به اینترنت متصل شوید، سپس VSCode را باز کنید. در برگه‌ی افزونه‌ها مشاهده خواهید کرد که این افزونه به روز شده‌است و باید صفحه را reload کنید. پس از آن یک فایل #C را هم باز کنید تا کار دریافت دیباگر جدید آن آغاز شود. اینجا است که کار به روز رسانی «دو مرحله‌ای» آن تکمیل می‌شود. پس از آن به ریشه‌ی پروژه وارد شده و دستور dotnet restore را صادر کنید تا وابستگی‌های شناسایی نشده، شناسایی شوند.
    • #
      ‫۷ سال و ۱ ماه قبل، شنبه ۲۸ مرداد ۱۳۹۶، ساعت ۲۲:۳۰
      استفاده از کامپایلر 1.1 برای پروژه‌های 1.1

      اگر NET Core SDK. جدید را نصب کنید، سیستم build پروژه، به صورت خودکار از آخرین نگارش نصب شده استفاده می‌کند (یعنی نگارش 2). اگر می‌خواهید این مورد را بازنویسی کنید، نیاز است فایل ویژه‌ای را به نام global.json با محتوای ذیل به ریشه‌ی solution در بالاترین سطح ممکن اضافه کنید:
      { 
        "sdk": { 
          "version": "1.0.4" 
        } 
      }
      در اینجا عدد 1.0.4 شماره نگارش SDK مدنظر است. این شماره‌ها را در مسیر C:\Program Files\dotnet\sdk می‌توانید مشاهده کنید و بر این اساس باید تصمیم گیری کنید (بر اساس شماره‌های موجود و نصب شده‌ی بر روی سیستم شما).
      و همچنین اگر فایل global.json را اضافه کرده‌اید، حین ارتقاء پروژه حتما باید شماره SDK موجود در آن‌را به صورت دستی اصلاح کنید؛ وگرنه پروژه build نخواهد شد. عدم وجود این فایل به معنای استفاده‌ی از آخرین شماره نگارش SDK موجود است.
  • #
    ‫۶ سال و ۱۱ ماه قبل، سه‌شنبه ۱۱ مهر ۱۳۹۶، ساعت ۱۶:۳۲
    در نسخه (حال) Net Core 2.0 اگر نیاز به ایجاد توکن جهت ارسال پیامک داشته باشد ( userManager.GenerateChangePhoneNumberTokenAsync  ) با مشکل عدم ایجاد توکن به صورت عدد صحیح (در واقع توکن ایجاد شده برابر است با  userManager.GenerateChangeEmailTokenAsync   ) مواجه میشوید که به نوعی باگ این نسخه است برای رفع این مشکل در Startup  برنامه تنظیم زیر را اضافه کنید .
    services.AddIdentity<ApplicationUser, IdentityRole>(option =>
    {
        //other stuff
        option.Tokens.ChangePhoneNumberTokenProvider = "Phone";
    });
     
    منبع  
  • #
    ‫۶ سال و ۷ ماه قبل، پنجشنبه ۱۲ بهمن ۱۳۹۶، ساعت ۱۱:۴۹
     ارتقاء به ASP.NET Core 2.1 - معرفی بسته‌ی Microsoft.AspNetCore.App 
    Microsoft.AspNetCore.All شامل یکسری بسته‌ی پشتیبانی نشده‌ی توسط تیم ASP.NET Core مایکروسافت هم هست. در نگارش 2.1 این بسته‌های مستقیما پشتیبانی نشده حذف شده و بجای آن meta-package جدیدی به نام Microsoft.AspNetCore.App معرفی شده‌است. این meta-package شامل بسته‌های زیر نیست:
    • Microsoft.Data.Sqlite
    • Microsoft.Data.Sqlite.Core
    • Microsoft.EntityFrameworkCore.Sqlite
    • Microsoft.EntityFrameworkCore.Sqlite.Core
    • Microsoft.Extensions.Caching.Redis
    • Microsoft.AspNetCore.DataProtection.AzureStorage
    • Microsoft.Extensions.Configuration.AzureKeyVault
    • Microsoft.AspNetCore.DataProtection.AzureKeyVault
    • Microsoft.AspNetCore.Identity.Service.AzureKeyVault
    • Microsoft.AspNetCore.AzureKeyVault.HostingStartup
    • Microsoft.AspNetCore.ApplicationInsights.HostingStartup
    اگر به آن‌ها نیاز داشتید، باید مستقیما ارجاعات آن‌ها را تعریف کنید.
    meta-package قبلی صرفا تا پایان طول عمر سری 2x پشتیبانی خواهد شد.
    مسیر جدید فایل‌های آن‌ها: C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App 
  • #
    ‫۶ سال قبل، پنجشنبه ۱ شهریور ۱۳۹۷، ساعت ۱۳:۰۵
    ارتقاء به ASP.NET Core 3.0
    همانطور که پیشتر نیز اعلام شده بود، از نگارش 3، دیگر بسته‌ی Microsoft.AspNetCore.All تولید نخواهد شد و اگر هنوز از آن استفاده می‌کنید باید از بسته‌ی Microsoft.AspNetCore.App بجای آن استفاده نمائید.
    • #
      ‫۵ سال و ۱۰ ماه قبل، سه‌شنبه ۸ آبان ۱۳۹۷، ساعت ۱۱:۲۵
      در ASP.NET Core 3.0، برای معرفی Microsoft.AspNetCore.App، از مدخل جدید FrameworkReference بجای PackageReference استفاده خواهد شد. 
  • #
    ‫۵ سال و ۱۰ ماه قبل، پنجشنبه ۱۷ آبان ۱۳۹۷، ساعت ۱۴:۵۷
    یک نکته‌ی مهم: روش صحیح به روز رسانی وابستگی‌های پروژه‌های NET Core.
    اگر solution شما از چندین پروژه تشکیل شده‌است، برای به روز رسانی وابستگی‌های آن، به آخرین نگارش پایدار هر کدام، از ابزار سراسری « dotnet-outdated » استفاده کنید. به این ترتیب به صورت خودکار تمام وابستگی‌های پروژه‌های شما اسکن شده و به آخرین نگارش موجود ارتقاء پیدا می‌کنند.
    برای نصب آن از دستور زیر استفاده کنید:
    dotnet tool install --global dotnet-outdated
    و یا برای به روز رسانی نگارش موجود آن، دستور زیر را اجرا کنید:
    dotnet tool update --global dotnet-outdated
    پس از آن، به ریشه‌ی solution خود، جائیکه فایل sln قرار دارد، از طریق خط فرمان وارد شده و دستور زیر را اجرا کنید:
    dotnet outdated -u
    مزیت مهم اینکار، به روز رسانی خودکار و یک دست تمام پروژه‌های یک solution، به آخرین وابستگی‌های پایدار آن‌ها است. به این ترتیب خطاهایی مانند «MissingMethodException» را در حین کار با اجزای غیرهماهنگ با هم، دریافت نخواهید کرد.
    • #
      ‫۳ سال و ۹ ماه قبل، دوشنبه ۲۶ آبان ۱۳۹۹، ساعت ۱۳:۵۹
      به روز رسانی در مورد ابزار dotnet-outdated 
      اگر پیشتر از ابزار dotnet-outdated برای به روز رسانی سراسری بسته‌های نیوگت پروژه‌های خود استفاده می‌کردید، این ابزار دیگر نگهداری نمی‌شود و به dotnet-outdated-tool تغییر نام یافته‌است. در این حالت اجرای دستورات زیر، در یک فایل bat و یا cmd در کنار فایل sln شما، کار به روز رسانی یک‌دست تمام وابستگی‌ها را انجام می‌دهد؛ البته اگر نیاز به به روز رسانی به net5 را داشته باشید، باید ابتدا یک سطر <TargetFramework>net5.0</TargetFramework> را نیز در تمام فایل‌های csproj خود اصلاح کنید و بعد اجرای دستوارت زیر:
      dotnet restore
      setx DOTNET_HOST_PATH "%ProgramFiles%\dotnet\dotnet.exe" /M
      dotnet tool uninstall --global dotnet-outdated
      dotnet tool update --global dotnet-outdated-tool
      dotnet outdated -u
      dotnet restore
      pause
  • #
    ‫۵ سال و ۹ ماه قبل، چهارشنبه ۱۴ آذر ۱۳۹۷، ساعت ۲۲:۴۱
    خطاهایی که در حین ارتقاء به نگارش 2.2 احتمالا شاهد خواهید بود:

    الف) پروژه با خطای زیر بارگذاری نمی‌شود:
    Version conflict detected for Microsoft.AspNetCore.Http.Abstractions.
    Install/reference Microsoft.AspNetCore.Http.Abstractions 2.2.0 directly to project xyz to resolve this issue.
    برای رفع این خطا،
    - ابتدا تمام TargetFramework‌های موجود را به 2.2 تغییر دهید.
     <TargetFramework>netcoreapp2.2</TargetFramework>
    - پس از آن تمام پوشه‌های bin و obj موجود در تمام پروژه‌های solution جاری را باید یکبار حذف کنید و سپس دستور dotnet restore را صادر کنید. این خطای تداخل نگارش‌ها (Version conflict detected) از وجود پوشه‌های قدیمی bin و obj ناشی می‌شود.
    - اکنون نیاز است وابستگی‌های پروژه را نیز یک‌دست کنید:
    dotnet tool update --global dotnet-outdated
    dotnet outdated -u

    ب) اخطار زیر را جهت ذکر صریح شماره نگارش بسته‌ی Microsoft.AspNetCore.App، مشاهده می‌کنید:
    A PackageReference to 'Microsoft.AspNetCore.App' specified a Version of `2.2.0`.
    Specifying the version of this package is not recommended.
    For more information, see https://aka.ms/sdkimplicitrefs
    در فایل پروژه، PackageReference این بسته‌ی مخصوص را بدون شماره نگارش ذکر کنید تا همواره به صورت خودکار از آخرین SDK نصب شده استفاده کند:
     <PackageReference Include="Microsoft.AspNetCore.App" />
  • #
    ‫۵ سال و ۶ ماه قبل، دوشنبه ۱۳ اسفند ۱۳۹۷، ساعت ۱۵:۴۰
    اگر هنگام اجرای برنامه در نگارش  ASP.Net Core 2.2 با مشکل  HTTP Error 500.30 - ANCM In-Process Start Failure   

    مواجه شدید تنظیمات فایل csproj را به  OutOfProcess  تغییر دهید .

    Change this section ...
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
      </PropertyGroup>
    
    to the following ...
    
      <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
        <AspNetCoreModuleName>AspNetCoreModule</AspNetCoreModuleName>
      </PropertyGroup>

    (ASP.NET Core Module (ANCM ارائه شده در نگارش  2.2 در دسترس نیست . 
  • #
    ‫۵ سال و ۱ ماه قبل، یکشنبه ۱۳ مرداد ۱۳۹۸، ساعت ۱۵:۵۷
    ارتقاء به ASP.NET Core 3.0 و سرنوشت metapackageهای Microsoft.AspNetCore

    پس از نصب SDK جدید، اگر دستور dotnet new mvc را صادر کنید، فایل csproj تولید شده‌ی آن تنها دارای TargetFramework ای معادل netcoreapp3.0 است و نه هیچ مورد دیگری:
    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp3.0</TargetFramework>
      </PropertyGroup>
    
      <ItemGroup>
      </ItemGroup>
    </Project>
    بنابراین برای ارتقاء پروژه‌های قبلی به نگارش 3 آن:
    - ابتدا TargetFramework را به netcoreapp3.0 تنظیم کنید.
    - سپس تمام PackageReferenceهایی را که به بسته‌های Microsoft.AspNetCore.All و یا Microsoft.AspNetCore.App اشاره می‌کنند، حذف کنید.
    - ارجاع به بسته‌ی Microsoft.AspNetCore.Razor.Design را نیز حذف کنید.
    - اگر پیشتر خاصیت AspNetCoreHostingModel را به حالت درون پروسه‌ای تنظیم کرده‌اید، آن‌را حذف کنید؛ چون حالت پیش‌فرض نگارش 3 است.
    - حذف شدن JSON.NET را مدنظر داشته باشید.
    - تغییرات حالت ثبت سرویس‌های MVC و Razor Pages و Web API را مدنظر داشته باشید.
    - مسیریابی آن نیز Endpoint routing شده‌است.
    - نقطه‌ی آغازین آن نیز بازنویسی شده‌است.
    • #
      ‫۵ سال و ۱ ماه قبل، دوشنبه ۱۴ مرداد ۱۳۹۸، ساعت ۱۶:۴۰
      در 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>