ارتقاء به ASP.NET Core 1.0 - قسمت 1 - NET Core. چیست؟
اندازه‌ی قلم متن
تخمین مدت زمان مطالعه‌ی مطلب: ده دقیقه

NET Core. چیست؟

برای اغلب توسعه دهنده‌های دات نت (برنامه‌های وب و دسکتاپ) تنها یک دات نت فریم ورک شناخته شده وجود دارد: The `Full` .NET Framework
که تنها بر روی ویندوز قابل اجرا است و آخرین نگارش پایدار آن در زمان نگارش این مطلب، 4.6.1 است. این فریم ورک بزرگ، از اجزایی تشکیل شده‌است که در تصویر ذیل قابل مشاهده‌اند:


مهم‌ترین قسمت‌های این فریم ورک «بزرگ» شامل مواردی مانند CLR که کار تبدیل کدهای IL را به کدهای ماشین انجام می‌دهد، BCL که کلاس‌های پایه‌ای را جهت کار با  IO، Text و غیره، فراهم می‌کنند، هستند؛ به علاوه کتابخانه‌هایی مانند Windows Forms، WPF و ASP.NET که برفراز BCL و CLR کار می‌کنند.
هرچند تعدادی از توسعه دهنده‌های دات نت تنها با Full framework کار می‌کنند، اما در طی سال‌های اخیر انشعابات بسیار دیگری از آن به وجود آمده‌اند؛ مانند دات نت‌های ویژه‌ی ویندوزهای 8 و Universal Windows Platform، دات نت مخصوص ویندوز فون 8 و ویندوز فون مبتنی بر پلتفرم سیلورلایت، به علاوه دات نت پلتفرم زامارین برای توسعه‌ی برنامه‌های iOS و Android نیز هم اکنون وجود دارند (البته در اینجا Mono، دات نت میکرو و غیره را هم باید ذکر کرد). این فریم ورک‌ها و انشعابات، به همراه پیاده سازی یک سری موارد مشترک و مواردی کاملا اختصاصی هستند که به سایر پلتفرم‌های دیگر قابل انتقال نیستند.

با زیاد شدن تعداد انشعابات دات نت «بزرگ»، نوشتن کدی که قابل اجرای بر روی تمام پلتفرم‌های یاد شده باشد، مشکل شد. اینجا بود که مفهومی را به نام PCL یا Portable class libraries معرفی کردند:


هدف از PCLها، ساده سازی کامپایل و به اشتراک گذاری کد بین پلتفرم‌های مختلف بود و پشتیبانی قابل توجهی هم از آن در VS.NET وجود دارد. هرچند این روش نسبتا موفق بود اما مشکلاتی را هم به همراه داشت. برای مثال با ارائه‌ی یک انشعاب و پلتفرم دیگری از دات نت «بزرگ»، کتابخانه‌ی PCL موجود، باید برای این انشعاب جدید مجددا کامپایل شود. به علاوه در اینجا تنها محدود به انتخاب امکانات مشترک بین پلتفرم‌های مختلف هستید.

برای رفع این مشکلات در پایان سال 2014، یک «دات نت فریم ورک جدید» به نام NET Core. معرفی شد که سورس باز است و همچنین چندسکویی (از ویندوز، لینوکس و OSX پشتیبانی می‌کند).


هرچند پیشتر Windows Store و ASP.NET Core app به صورت پلتفرم‌هایی مجزا ارائه شده بودند، اما اکنون از یک BCL مشترک به نام CoreFX استفاده می‌کنند و نحوه‌ی توزیع آن‌ها صرفا از طریق نیوگت است. به عبارتی اینبار بجای دریافت یک فریم ورک «بزرگ»، تنها اجزایی را دریافت می‌کنید که از طریق نیوگت سفارش داده‌اید.
به این ترتیب نه تنها کار توزیع برنامه‌های مبتنی بر NET Core. با سهولت بیشتری انجام خواهد شد، بلکه به روز رسانی اجزای یک برنامه، تاثیری بر روی سایر برنامه‌ها نخواهد داشت و مشکلات جانبی را به وجود نمی‌آورد. به علاوه دیگر نیازی نیست تا منتظر یک نگارش «بزرگ» دیگر باشید تا بتوانید آخرین به روز رسانی‌ها را دریافت کنید. اینبار به روز رسانی بسته‌های نیوگت برنامه معادل هستند با به روز رسانی کل فریم ورک در نگارش‌های قبلی «بزرگ» آن. در اینجا حتی CoreCLR و NET Native runtime. که مربوط به Windows runtime است هم از طریق نیوگت به روز رسانی می‌شود.

البته NET Core. انتهای مسیر نیست و هم اکنون NETStandard نیز جهت رفع مشکلات کامپایل مجدد PCLها در حال توسعه است و پس از ارائه‌ی آن، PCLها منسوخ شده درنظر گرفته می‌شوند. در این حالت با انتخاب target platform ایی به نام NETStandard (بجای مثلا انتخاب دات نت 4.5 و ویندوز فون 8)، اینبار دات نت 4.5 و ویندوز فون 8 و تمام پلتفرم‌های دیگر، به صورت یکجا انتخاب می‌شوند و اگر پلتفرم جدیدی برای مثال از NETStandard نگارش 1.1 پشتیبانی کند، به این معنا است که کتابخانه‌ی شما هم اکنون با آن سازگار است و دیگر نیازی به کامپایل مجدد آن نخواهد بود.
به علاوه هر برنامه‌ای که بر اساس NETStandard تهیه شود، قابلیت اجرای بر روی NET Core. را نیز خواهد داشت. به عبارتی برنامه‌های NETStandard همان برنامه‌های مبتنی بر NET Core. هستند.


ASP.NET Core چیست؟

در زمان نگارش این مطلب، دو گزینه‌ی برنامه‌های وب ASP.NET Core 1.0 و همچنین Windows Store apps (مبتنی بر NET Native Runtime.) قابلیت استفاده‌ی از این پلتفرم جدید NET Core. دارند.
ASP.NET Core 1.0، که پیشتر با نام ASP.NET 5 معرفی شده بود، بازنویسی کامل ASP.NET است که با ایده‌ی کاملا ماژولار بودن، تهیه شده‌است و از طریق آن، قابلیت به روز رسانی منظم و توزیع آسان از طریق نیوگت، میسر خواهد شد. به علاوه در آن، بسیاری از الگوهای برنامه نویسی شیء‌گرا مانند تزریق وابستگی‌ها، به صورت توکار و از ابتدا پشتیبانی می‌شوند.
ASP.NET Core 1.0 از WebForms ، VB ، WebPages و SignalR پشتیبانی نمی‌کند. البته در این بین عدم پشتیبانی از «وب فرم‌ها» قطعی است؛ اما افزودن سه مورد دیگر یاد شده، جزو لیست کارهای پس از ارائه‌ی نگارش 1 این فریم ورک قرار دارند و به زودی ارائه خواهند شد.


اکنون وضعیت  ASP.NET MVC 5 و ASP.NET Web API 2 چگونه است؟

ASP.NET Core 1.0 مدل برنامه نویسی ASP.NET MVC و Web API را به صورت یکپارچه ارائه می‌دهد و دیگر خبری از ارائه‌ی مجزای این‌ها نخواهد بود و دقیقا بر مبنای مفاهیم برنامه نویسی این دو بنا شده‌است. به صورت خلاصه MVC + Web API + Web Pages = Core MVC 1.0
پیشتر فضای نام System.Web.MVC مخصوص ASP.NET MVC بود و فضای نام مجزای دیگری به نام System.Web.Http مخصوص ASP.NET Web API. اما اکنون تنها یک فضای نام مشترک و یکپارچه به نام Microsoft.AspNet.Mvc هر دوی این‌ها را پوشش می‌دهد.

در این نگارش جدید وابستگی از system.web مبتنی بر IIS حذف شده‌است و با استفاده از هاست جدید چندسکویی به نام Kesterl، به سرعتی 5 برابر سرعت NodeJS دست یافته‌اند.


آخرین تاریخ به روز رسانی ASP.NET MVC 5.x دوشنبه، 20 بهمن 1393 است (با ارائه نگارش 5.2.3 که آخرین نگارش رسمی و پایدار آن است) و آخرین تاریخ به روز رسانی ASP.NET Web API 2.x نیز همان روز است.
هرچند مایکروسافت عادت به اعلام رسمی پایان پشتیبانی از بسیاری از محصولات خود را ندارد اما تمام فناوری‌های «قدیمی» خودش را بر روی CodePlex نگهداری می‌کند و تمام فناوری‌های «جدید» را به GitHub منتقل کرده‌است. بنابراین اگر در مورد فناوری خاصی به Codeplex رسیدید، یعنی «دیگر ادامه‌ی رسمی نخواهد یافت» و حداکثر در حد رفع یک سری باگ‌ها و مشکلات گزارش شده باقی می‌مانند.
مثال 1: هم اکنون نگارش دوم ASP.NET Identity را بر روی Codeplex می‌توانید مشاهده کنید. نگارش سوم آن به GitHub منتقل شد‌ه‌است که این نگارش صرفا با ASP.NET Core 1.0 سازگار است. در مورد ASP.NET MVC و Web API نیز چنین حالتی رخ داده‌است. نگارش‌های 5 و 2 آن‌ها بر روی Codeplex موجود هستند و نگارش ششم که به ASP.NET Core 1.0 تغییر نام یافت و ترکیبی است از MVC و Web API، در GitHub توسعه می‌یابد.
مثال 2: WCF به علت پیچیدگی بیش از حد و مدرن نبودن طراحی آن، رقابت را به ASP.NET Web API 2.x واگذار کرد و مدل برنامه نویسی ASP.NET Web API 2.x نیز هم اکنون جزئی از ASP.NET Core 1.0 است. بنابراین اگر قصد ایجاد پروژه‌ی جدیدی را بر این مبنا دارید، بهتر است با APS.NET Core 1.0 کار را شروع کنید.


اما هنوز تعداد زیادی از کتابخانه‌های Full framework به NET Core. انتقال پیدا نکرده‌اند

برای نمونه هنوز EF Core 1.0 که پیشتر نام EF 7.x به آن داده شده بود، به مرحله‌ی نهایی تکمیل قابلیت‌های آن نرسیده‌است. اما باید دانست که ASP.NET Core 1.0 صرفا بر فراز NET Core. قابل اجرا نیست؛ بلکه قابلیت اجرای بر فراز NET 4.6. و یا همان دات نت «بزرگ و کامل» را نیز دارد. بنابراین به سادگی قابلیت اجرای EF 6.x و یا NHibernate را نیز دارا است. تنها مزیتی را که در اینجا از دست خواهید، قابلیت چندسکویی بودن ASP.NET Core 1.0 است؛ زیرا EF 6.x با چنین دیدی طراحی نشده‌است.



همانطور که ملاحظه می‌کنید، ASP.NET Core 1.0 قابلیت اجرای بر روی هر دوی NET Core 1.0. و NET 4.6. را دارا است. اما یکی، چندسکویی است و دیگری صرفا مختص به ویندوز.


فناورهای منسوخ شده‌ی در NET Core.

یکسری از فناوری‌ها و کتابخانه‌ها احتمالا هیچگاه قابلیت انتقال به NET Core. را نخواهند یافت و یا حداقل باید تا چندنگارش بعدی آن صبر کنند. فناوری‌های خاتمه یافته‌ی با NET Core. به شرح زیر هستند:
- Reflection: همانطور که عنوان شد، NET Core. بر فراز CoreCLR و همچنین NET Native runtime. اجرا می‌شود و تولید برنامه‌های native و static linking آن‌ها مانند برنامه‌های ++C، نیاز به دانستن اجزایی دارد که به صورت پویا فراخوانی نمی‌شوند و بلافاصله و در زمان کامپایل، توسط کامپایلر قابل تشخیص هستند. همین محدودیت سبب شده‌است که استفاده‌ی از Reflection در NET Core. به حداقل ممکن آن برسد. برای مثال در System.Object متد GetType آن تنها نام نوع را باز می‌گرداند و نه اطلاعات بیشتری را مانند  GetMembers سابق.
- App Domains: هرچند CoreCLR از App Domains پشتیبانی می‌کند اما NET Native runtime. خیر. به همین جهت برای ایزوله سازی برنامه‌ها توصیه شده‌است که از containerهایی مانند docker استفاده شود.
- Remoting: پیش از WCF جهت برقراری ارتباط بین برنامه‌ها مطرح شده بود و هم اکنون در دات نت کامل هم آنچنان استفاده‌ای از آن نمی‌شود.
- binary serialization: البته کتابخانه‌هایی مانند JSON.NET و امثال آن، نگارش NET Core. هم دارند؛ اما چون binary serialization نیاز به اطلاعات reflection قابل توجهی دارد دیگر پشتیبانی نخواهد شد.


فناور‌هایی که به زودی به NET Core. منتقل می‌شوند

یکسری از فناوری‌ها مانند XAML هنوز معادل NET Core. ندارند و لیست زیر قرار است از طرف مایکروسافت سورس باز شده و همچنین به NET Core. منتقل شود:
System.Data
System.DirectoryServices
System.Drawing
System.Transactions
System.Xml.Xsl and System.Xml.Schema
System.Net.Mail
System.IO.Ports
System.Workflow
System.Xaml


مراحل نصب ASP.NET Core 1.0

پیش از نصب نگارش 1.0 RTM باید به این نکته دقت داشت که نصاب آن، نگارش‌های آزمایشی قبلی را حذف و یا بازنویسی نمی‌کند و همین مساله ممکن است سبب بروز تداخل‌هایی و یا حتی از کار افتادن VS.NET شما شود. بنابراین اگر نگارش‌های RC یا بتا را پیشتر نصب کرده‌اید، به Add remove programs ویندوز مراجعه کرده و سه مورد ذیل را حتما حذف کنید (خیلی مهم):
- Preview Tooling (all versions)
- NET Core Runtime SDK (all versions).
- NET Core Runtime (all Versions).
پس از حذف بسته‌های قدیمی، برای نصب نگارش 1.0 RTM، ابتدا نیاز است Visual Studio 2015 Update 3 را نصب کنید و پس از آن با استفاده از NET Core for Visual Studio Official MSI Installer. کار نصب اجزای مورد نیاز آن انجام خواهد شد.


بررسی شماره نگارش 1.0 RTM

پس از نصب اجزای عنوان شده، خط فرمان را گشوده و دستور ذیل را صادر کنید:
 C:\Users\Vahid>dotnet --version
1.0.0-preview2-003121
همانطور که مشاهده می‌کنید، نگارش ذکر شده هنوز در مرحله‌ی preview است و صرفا مرتبط است به tooling و یا ابزارهای مرتبط با آن.
اگر یک پروژه‌ی خالی ASP.NET Core Web Application را نیز شروع کنید (با طی مراحل زیر جهت ایجاد یک پروژه‌ی جدید):
 .NET Core -> ASP.NET Core Web Application (.NET Core) -> Select `Empty` Template


در اینجا فایل جدیدی را به نام global.json مشاهده می‌کنید که محتوایات آن شامل دقیقا همین شماره نگارش است؛ به همراه معرفی پوشه‌های اصلی پروژه:
{
  "projects": [ "src", "test" ],
  "sdk": {
    "version": "1.0.0-preview2-003121"
  }
}
  • #
    ‫۸ سال و ۲ ماه قبل، دوشنبه ۲۱ تیر ۱۳۹۵، ساعت ۲۲:۴۰
    Asp.net Core روی ویژوال استدیو 2013 نصب نمیشه؟ 
    • #
      ‫۸ سال و ۲ ماه قبل، دوشنبه ۲۱ تیر ۱۳۹۵، ساعت ۲۳:۲۰
      - خیر. ابزارهای مخصوص ویژوال استودیوی آن به Roslyn وابسته‌اند که به همراه VS 2015 ارائه شده‌است.
      - البته خود NET Core. وابستگی به IDE شما ندارد و چندسکویی است. برای این منظور می‌توانید از VSCode هم استفاده کنید (حتی در لینوکس).
  • #
    ‫۸ سال و ۲ ماه قبل، شنبه ۲ مرداد ۱۳۹۵، ساعت ۱۴:۴۳
    آیا مایکروسافت برنامه ای برای تولید اپلیکیشن‌های دسکتاپی برای لینوکس تحت NetCore. هم داره ؟ آیا بر اساس Xaml خواهد بود که هنوز معلوم نیست ایا در Netcore. معادل خواهد داشت یا نه . 
  • #
    ‫۸ سال و ۱ ماه قبل، یکشنبه ۱۷ مرداد ۱۳۹۵، ساعت ۰۲:۲۷
    با عرض سلام
    یک نکته اینکه الان ما داریم با دات نت فریم ورک کدهای کتابخانه را فراهم می‌کنیم آیا این امکان یا ابزاری وجود داره که در حین کدنویسی بررسی این موضوع را داشته باشه که قابل استفاده در Dotnet core است یا خیر؟ که قابلیت استفاده‌های آتی را داشته باشد
  • #
    ‫۸ سال و ۱ ماه قبل، سه‌شنبه ۱۹ مرداد ۱۳۹۵، ساعت ۰۵:۳۵
    نکته تکمیلی :

    فناور‌هایی که به زودی به NET Core. منتقل می‌شوند


    یکسری از فناوری‌ها مانند XAML هنوز معادل NET Core. ندارند و لیست زیر قرار است از طرف مایکروسافت سورس باز شده و همچنین به NET Core. منتقل شود:
    System.Data
    System.DirectoryServices
    System.Drawing
    System.Transactions
    .
    .
    .

    در حال حاضر می‌توانید با استفاده از بسته‌ی زیر نیاز خودتان را نسبت به گزینه Bold شده (
    System.Drawing  )، برطرف کنید :

    "CoreCompat.System.Drawing": "1.0.0-beta006"

    بنده برای تولید Captcha موجود در این پست از بسته مذکور استفاده کردم و بدون مشکل نیاز را تامین کرده است.

    جزییات کامل را در این مخزن دنبال کنید.
    • #
      ‫۶ سال و ۱۱ ماه قبل، سه‌شنبه ۱۱ مهر ۱۳۹۶، ساعت ۱۳:۳۲
      جایگزین مناسبی برای بسته ( system.Drawing 
      "CoreCompat.System.Drawing": "1.0.0-beta006"
      در dot net core 2.0  بسته جایگزین  ( System.Drawing.Common  )
      System.Drawing.Common -Version 4.5.0-preview1-25718-03  

    • #
      ‫۸ سال قبل، شنبه ۲۷ شهریور ۱۳۹۵، ساعت ۰۰:۴۳
      Error: پس از ارتقا به نسخه Net Core 1.0.1.  با خطای زیر در زمان Build مواجه شدم :

      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'. Possible causes:

        The project has not been restored or restore failed -run 'dotnet restore'
        The project does not list one of 'win10-x64, win81-x64, win7-x64' in the 'runtimes'

      Fix: اضافه کردن موارد زیر در project.json :

      "runtimes": {
          "win10-x64": {},
          "win81-x64": {},
          "win8-x64": {}
        }
  • #
    ‫۷ سال و ۱۰ ماه قبل، شنبه ۱۵ آبان ۱۳۹۵، ساعت ۱۳:۵۳
    نکته‌ای در مورد دریافت آخرین اخبار دات نت Core
    اگر می‌خواهید آخرین اخبار و تغییرات NET Core. را به صورت ایمیل دریافت کنید، به مخزن کد « Announcements » مراجعه کرده و گزینه‌ی watch بالای صفحه را انتخاب کنید:

  • #
    ‫۷ سال و ۷ ماه قبل، سه‌شنبه ۳ اسفند ۱۳۹۵، ساعت ۰۸:۳۳
    پیش نیاز این دوره آیا MVC هست؟
    یا اگر کسی MVC  هنوز کار نکرده میتونه از این دوره شروع کنه ؟
    • #
      ‫۷ سال و ۷ ماه قبل، سه‌شنبه ۳ اسفند ۱۳۹۵، ساعت ۱۲:۱۷
      - بله. به همین جهت واژه‌ی «ارتقاء» در ابتدای آن ذکر شده‌است.
      - خیر. از اینجا شروع کنید: «ASP.NET MVC»  
  • #
    ‫۷ سال و ۶ ماه قبل، یکشنبه ۶ فروردین ۱۳۹۶، ساعت ۲۳:۱۲
    به روز رسانی
    فایل global.json در VS 2017 و ساختار جدید آن، از پروژه‌های ASP.NET Core حذف شده‌است. جایگزین آن مراجعه به برگه‌ی خواص پروژه و انتخاب شماره فریم ورک مدنظر است:

  • #
    ‫۵ سال و ۵ ماه قبل، یکشنبه ۲۵ فروردین ۱۳۹۸، ساعت ۱۳:۴۵
    یک نکته‌ی تکمیلی: برای کار با نگارش‌های مختلف NET Core. نیاز به چه نگارشی از Visual Studio وجود دارد؟

    .NET Core SDK .NET Core Runtime Compatible Visual Studio MSBuild Notes
    2.1.5nn 2.1 2017 15 Installed as part of VS 2017 version 15.9
    2.1.6nn 2.1 2019 16 Installed as part of VS 2019
    2.2.1nn 2.2 2017 15 Installed manually
    2.2.2nn 2.2 2019 16 Installed as part of VS 2019
    3.0.1nn 3.0 (Preview) 2019 16 Installed manually

    و یا از VSCode استفاده کنید.
  • #
    ‫۵ سال و ۱ ماه قبل، شنبه ۵ مرداد ۱۳۹۸، ساعت ۱۹:۴۱
    یک نکته‌ی تکمیلی: فعال سازی Dot net core 3 در Visual Studio 2019

    وقتی Visual Studio 2019  را نصب میکنید به طور پیش فرض Core 2 را دارا هست اما نسخه dote net core 3 را ندارد. برای نصب dot net core 3 ابتدا  SDK مربوطه را دانلود کنید. تا این لحظه آخرین نسخه dotnet-sdk-3.0.100-preview7-012821 می‌باشد. ممکن است برای شما نسخه جدیدتری آمده باشد. سپس آن را نصب کنید و چون نسخه  preview هست باید در visual studio 2019 آن را فعال کنید. در نسخه‌های قدیمی‌تر ویژوال استدیو 2019 ابتدا از منوی Tools مسیر زیر را دنبال کنید:
    Tools > Options > Project and Solutions > .Net Core
    سپس تیک مربوط به Use preview of the .NET Core SDK را قرار دهید. چنانچه این گزینه را نداشتید از مسیر زیر استفاده کنید:
    Tools -> Options -> Environment -> Preview Features
    حال تیک مربوط به Use preview of the .NET Core SDK را بزنید.
    اکنون میتوانید پروژه خود را اجرا کنید.
  • #
    ‫۵ سال و ۱ ماه قبل، سه‌شنبه ۱۵ مرداد ۱۳۹۸، ساعت ۲۰:۱۳
    با توجه به اینکه فاصله آپدیت‌ها در نسخه‌های .Net Core بسیار نزدیکه و باید هر روز خودمونو آپدیت کنیم، و با ارائه هر نسخه از .Net Core پشتیبانی از نسخه‌های قبلی کم و کمتر میشه و نهایتا تموم میشه مثلا .Net Core ورژن یک، کسی که بخواد این تکنولوژی رو یاد بگیره از اول، پیشنهاد میشه از کجا شروع کنه؟چون اگه بخواد با این سری آموزش (دوره ارتقا به دات نت کور یک) شروع کنه چون ورژن‌های جدید اومدن خیلی چیزهارو شاید اینجا یاد بگیره ولی اگه بخواد خودشو آپدیت کنه خیلی چیزها رو دوباره باید یاد بگیره، پیشنهاد شما برای کسی که بخواد این تکنولوژی رو یاد بگیره چیه آیا از جدیدترین نسخه شروع کنه یعنی ورژن 3، که اگه اینکارو انجام بده قطعا منابع براش کم هستن، یا اینکه از نسخه‌های قدیمی مثل ورژن یک .Net Core شروع کنه چون منابع براش زیاد هستن ؟
    • #
      ‫۵ سال و ۱ ماه قبل، سه‌شنبه ۱۵ مرداد ۱۳۹۸، ساعت ۲۰:۲۶
      کاری به عنوان 1 دار این سری نداشته باشید. در نظرات تکمیلی هر قسمت آن، تا نگارش 3 به روز رسانی شده‌اند و نکات مرتبط، ذکر شده‌اند.
  • #
    ‫۴ سال و ۱۱ ماه قبل، چهارشنبه ۱۰ مهر ۱۳۹۸، ساعت ۱۳:۴۶
    یک نکته‌ی تکمیلی: اگر بخواهیم از ویژوال استودیو برای کار با NET Core. استفاده کنیم، حداقل چه نگارشی را باید نصب کرد؟

    .NET Core SDK version Visual Studio version
    3.0                 Visual Studio 2019 version 16.3 or higher.
    2.2                 Visual Studio 2017 version 15.9 or higher.
    2.1                 Visual Studio 2017 version 15.7 or higher.
    1.x                 Visual Studio 2017 version 15.0 or higher.