C#7.1无法发布

时间:2017-12-22 19:55:30

标签: c# visual-studio visual-studio-2017 c#-7.1

我有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应用程序?

4 个答案:

答案 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及更高版本进行编码和发布,请确保无论构建配置如何DebugRelease等,都要配置此设置。

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

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

</Project>

enter image description here

答案 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的最新版