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 及更高版本编码和发布,请确保您配置此设置而不考虑生成配置(Debug
、Release
等)。
<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 行并保存。
而已!
运行 您的代码,从现在开始它应该可以正常工作。
我有 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.
请注意,此设置取决于您的构建配置。
为确保您可以使用 C# 7.1 及更高版本编码和发布,请确保您配置此设置而不考虑生成配置(Debug
、Release
等)。
<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 行并保存。
而已!
运行 您的代码,从现在开始它应该可以正常工作。