簡體   English   中英

如何在 Visual Studio 2017 中使用 C# 8?

[英]How can I use C# 8 with Visual Studio 2017?

我想在 Visual Studio 2017 中使用 C# 8.0(尤其是范圍和不可為空的引用類型)。這可能嗎?

展望未來,微軟希望比過去更緊密地將 C# 語言版本與框架版本聯系起來。 他們真的只希望你在 .NET Core 3.x 和 .NET Standard 2.1 項目中使用 C# 8,這意味着使用 Visual Studio 2019。我對C# 8 支持 .NET Framework 的回答是什么? 有所有血腥的細節。

但是,如果您真的想要,現在可以通過使用將 C# 7 引入 Visual Studio 2015的相同技巧在 Visual Studio 2017 中使用 C# 8將最新版本的Microsoft.Net.Compilers Nuget 包安裝到項目中 它有效,但當然 VS 2017 不了解 C# 8 語法,因此它看起來不是很漂亮。 這是一個屏幕截圖,顯示 VS 2017 能夠使用可為空引用類型和靜態本地方法(兩者都是 C# 8 功能)編譯一個小型測試庫:

在此處輸入圖片說明


如果您想嘗試,這里是 .csproj 和代碼:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>netstandard2.0;net452</TargetFrameworks>
    <LangVersion>8.0</LangVersion>    
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.Net.Compilers" Version="3.3.1">
      <PrivateAssets>all</PrivateAssets>
      <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
  </ItemGroup>
</Project>

——

using System;

namespace CSharp8Test
{
    public class Class1
    {
        public string? NullableString { get; } = "Test";

        public static void Test()
        {
            Console.WriteLine(Test2());
            static int Test2() => 5;
        }
    }
}

補充一下 series0ne 關於主要版本的評論:確實,新的 VS 通常附帶新的 C# 版本。 但是,根據以往的經驗,可以將以前版本的 VS 升級到編譯較新版本的 C# 代碼,主要是通過升級“Microsoft.Net.Compilers”Nuget 包。 您可以參考這篇文章了解更多信息。 如何在 Visual Studio 2015 中使用 c#7?

您可以在 vs2017 中使用Microsoft.Net.Compilers.Toolset而不是Microsoft.Net.Compilers

此包旨在替代Microsoft.Net.Compilers(僅適用於 Windows 的包)和 Microsoft.NETCore.Compilers。 這些包現在已棄用,將來會被刪除。

該包需要 MSBuild 15.0 和 .NET Destkop 4.7.2 或 .NET Core 2.1

軟件包版本:

與 vs2019 相比,包版本映射了 c#8 支持的能力。

  • 版本 3.0 包括 C# 8.0(Visual Studio 2019 版本 16.0)的預覽版,但預覽版使用了 2.11。
  • 版本 3.1 包括 C# 8.0 的預覽(Visual Studio 2019 版本 16.1)
  • 版本 3.2 包括 C# 8.0 的預覽(Visual Studio 2019 版本 16.2)
  • 3.3 版包括 C# 8.0(Visual Studio 2019 16.3 版、.NET Core 3.0)

如何使用

將這些行添加到 .csproj

 <PropertyGroup>
     //....
    <LangVersion>8.0</LangVersion>    
    <Nullable>enable</Nullable> <!-- to support nullable reference type -->
  </PropertyGroup>

<ItemGroup>   
    <PackageReference Include="Microsoft.Net.Compilers.Toolset" Version="3.3.1" PrivateAssets="All" />
  </ItemGroup>

所以目前的信息是:

  • Visual Studio 2019 已經發布; 它不再處於預覽狀態。
  • C# 8 仍處於預覽階段( 源代碼)。
  • C# 8 beta 編譯器可用於 Visual Studio 2019 或最新的 .NET Core 3.0 預覽版。 來源

由此,我推斷出 C# 8 目前在 VS2017 中不可用,並且沒有計划改變它。

您還可以在 Visual Studio 2019 的任何 .NET 項目中使用 C# 8。https : //dirkstrauss.com/enabling-c-8-in-visual-studio-2019/

雖然有一些限制,但這是可能的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM