我有ASP.NET Core C#Web应用程序。我做了一些现在使用C#7.1功能的更改。我更改了项目版本,因此编译并运行正常。但是,当我尝试发布项目时,我收到一个错误:
功能'默认字面值'在C#7.0中不可用。请使用7.1或更高版本的语言版本。
我看到的编译命令是:
C:...\.nuget\packages\microsoft.net.compilers\2.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 Core Web应用程序?
答案 0 :(得分:26)
<强>更新强>
将我的VS2017从版本15.4.5升级到15.5.2后我可以重现问题,但是我收到错误
功能&#39;默认字面值&#39;在C#7.0中不可用。请用 语言版本7.1或更高版本
@Jeremy Cook的答案解决了这个问题:
.pubxml中的<LangVersion>latest</LangVersion>
在旧项目和新项目格式中,项目文件中的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>
答案 1 :(得分:26)
将<LangVersion>latest</LangVersion>
添加到.pubxml文件后,Visual Studio 2017(在我的情况下为15.5.2)可以发布。
来源:https://developercommunity.visualstudio.com/solutions/166543/view.html
答案 2 :(得分:0)
如果要从ASP.NET Core 2.0迁移到ASP.NET Core 2.1,请确保您有行
<TargetFramework>netcoreapp2.1</TargetFramework>
在.pubxml
文件中。
答案 3 :(得分:-2)
您似乎已发布到当地的Nuget商店。确保将Nuget存储配置为使用C#7.1。并检查您的Nuget.exe包是否已更新为可以使用C#7.1的最新版