C# 7.1 无法发布

C# 7.1 can't be published

我有 ASP.NET 核心 C# Web 应用程序。我做了一些更改,现在使用 C# 7.1 功能。我更改了项目版本,因此它可以正常编译和运行。但是,当我尝试 发布 项目时,出现错误:

Feature 'default literal' is not available in C# 7.0. Please use language version 7.1 or greater.

我看到的编译命令是:

C:...\.nuget\packages\microsoft.net.compilers.6.1\tools\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705,1701,1702,2008 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;RELEASE;NETCOREAPP2_0 /errorendlocation /preferreduilang:en-US /warnaserror+:NU1605`

按照其他地方的建议,我安装了 Microsoft.Net.Compilers (v2.6.1),但没有任何区别。

是否有 Visual Studio 设置专门影响发布?

更新:控制台应用程序似乎没有这个问题。如果它构建成功,它也会成功发布。但是,Web 应用程序 不会发布 。有人成功发布了具有 C# 7.1 功能的 ASP.NET 核心 Web 应用程序吗?

更新:
将我的 VS2017 从版本 15.4.5 升级到 15.5.2 后,我可以重现该问题,但出现错误

Feature 'default literal' is not available in C# 7.0. Please use language version 7.1 or greater

@Jeremy Cook 的回答解决了这个问题:
<LangVersion>latest</LangVersion> 在 .pubxml


在新旧项目格式中,项目文件中的 LangVersion 元素对此负责。 您可以通过 csproj xml 文件或通过 visual studio.

中的 UI 更改它

请注意,此设置取决于您的构建配置。 为确保您可以使用 C# 7.1 及更高版本编码和发布,请确保您配置此设置而不考虑生成配置(DebugRelease 等)。

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>latest</LangVersion>
  </PropertyGroup>

</Project>

您似乎已发布到本地 Nuget 商店。确保 Nuget 存储配置为使用 C#7.1。还要检查你的 Nuget.exe 包是否更新到可以使用 C#7.1

的最新版本

<LangVersion>latest</LangVersion> 添加到您的 .pubxml 文件使得 Visual Studio 2017(在我的例子中是 15.5.2)发布成为可能。

来源:https://developercommunity.visualstudio.com/solutions/166543/view.html

如果您要从 ASP.NET Core 2.0 迁移到 ASP.NET Core 2.1,请确保您有行

<TargetFramework>netcoreapp2.1</TargetFramework>

在您的 .pubxml 文件中。

对于MAC个用户,我确实花了很长时间才搞清楚。这是对我有用的。 Right-click 到您的主 .csproj 文件,然后单击 'Edit Project File' 将其打开。 然后,在 ... 内添加 latest 行并保存。 而已! 运行 您的代码,从现在开始它应该可以正常工作。