یک نکتهی تکمیلی: چگونه VSCode را برای NET Core 3.0. و C# 8.0 آماده کنیم؟
مرحلهی اول: نصب SDK مربوطه
در این تاریخ، این SDK در مرحلهی پیشنمایش است و نگارش نهایی آن قرار است صرفا با VS 2019 سازگار و هماهنگ باشد (و با VS 2017 کار نمیکند)؛ اما هم اکنون در VSCode قابل استفادهاست. برای این منظور SDK آنرا از آدرس
https://dotnet.microsoft.com/download/dotnet-core/3.0 دریافت و نصب کنید. پس از نصب، یک چنین خروجی را در خط فرمان مشاهده خواهید کرد:
> dotnet --version
3.0.100-preview-010184
مشکل: پس از نصب نگارش 3، ممکن است برنامههایی که از SDK نگارش 2 استفاده میکنند، به مشکل بر بخورند.
راه حل: برنامههای مبتنی بر NET Core.، شماره نگارش SDK خود را از فایل ویژهای به نام global.json دریافت میکنند. اگر این فایل در ریشهی پروژهی شما وجود نداشته باشد، یعنی همواره از آخرین شمارهی SDK نصب شده استفاده شود. بنابراین ابتدا لیست SDKهای نصب شده را با دستور زیر پیدا کنید:
سپس برای پروژههای قدیمی خود که فعلا قصد به روز رسانی آنها را ندارید، یک فایل global.json را به صورت زیر، در ریشهی پروژه تولید کنید:
> dotnet new globaljson --sdk-version 2.2.100
> type global.json
در اینجا 2.2.100 یکی از شمارههایی است که توسط دستور dotnet --list-sdks یافتهاید و پروژهی قبلی شما بر اساس آن کار میکند.
مرحلهی دوم: نصب افزونهی پیشنمایش VSCode مخصوص C# 8.0
در این تاریخ هنوز این افزونه در نگارش بتای آن قرار دارد. بنابراین در لیست دریافتهای خودکار VSCode قرار نمیگیرد و باید دستی نصب شود. برای این منظور به آدرس
https://github.com/OmniSharp/omnisharp-vscode/releases مراجعه کرده و آخرین نگارش بتای آنرا دریافت کنید.
در VSCode، قسمتیکه افزونهها را نمایش میدهد، یک دکمهی ... مانند وجود دارد. بر روی آن که کلیک کنید. در منوی باز شده، گزینهی install from vsix نیز موجود است که دقیقا برای نصب دستی یک چنین افزونههایی پیشبینی شدهاست. پس از نصب فایل vsix دریافت شدهی از GitHub، شماره نگارش 1.18.0-beta7 در قسمت افزونههای VSCode قابل مشاهده خواهد بود.
مرحلهی آخر: ایجاد یک پروژهی جدید مخصوص NET Core 3x. با پشتیبانی از C# 8.0
اکنون یک پوشهی جدید را ایجاد کرده و در خط فرمان دستور dotnet new console را صادر کنید. سپس فایل csproj آنرا به صورت زیر تغییر دهید تا از NET Core 3x. و C# 8.0 و قابلیت جدید Nullable Reference Types آن پشتیبانی کند:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<LangVersion>8.0</LangVersion>
<NullableContextOptions>enable</NullableContextOptions>
</PropertyGroup>
</Project>
اکنون یک چنین پروژهای قابلیت کار و دیباگ در VSCode را پیدا میکند.
یک نکته: اگر دستور dotnet new classlib را صادر کنید، هنوز TargetFramework آنرا netstandard2.0 تنظیم میکند. فایل csproj آن نیز باید دقیقا مانند مثال فوق تنظیم شود، با این تفاوت که سطر OutputType را ندارد.