C#7.1无法发布

Fel*_*lix 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`
Run Code Online (Sandbox Code Playgroud)

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

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

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

Jer*_*ook 37

添加<LangVersion>latest</LangVersion>到.pubxml文件使Visual Studio 2017(在我的情况下为15.5.2)可以发布.

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

  • 如果有人在Mac版本的Visual Studio上运行此文件,则无法找到.pubxml文件或下面@ ironstone13的答案中提到的配置选项。我要做的就是在我的.csproj文件中的&lt;PropertyGroup&gt;标签下添加`&lt;LangVersion&gt; latest &lt;/ LangVersion&gt;`,它摆脱了这个错误!Visual Studio for Mac V 8.0.2 (2认同)

iro*_*e13 34

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

功能'默认文字'在C#7.0中不可用.请使用语言版本7.1或更高版本

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


在新旧项目格式中LangVersion,项目文件中的元素对此负责.您可以通过csprojxml文件或通过Visual Studio中的UI 更改它.

请注意,此设置取决于您的构建配置.为了确保您能够代码和发布使用C#7.1和更高确保无论您配置构建配置(此设置Debug,Release等等).

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

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

</Project>
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

  • @Felix,你为`Debug`和`Release`配置设置了C#7.1吗?你可能在`Debug`中编码,但在`Release`中发布 (7认同)
  • 很好,你解决了你的问题,你肯定可以自由地接受任何你想要的答案,作为"回答你的问题",但记住未来的访问者,现在最终会得到你得到的相同结论,他们做了一切这个答案告诉他们,但他们仍然无法发表.因此,答案确实*不*实际上回答了你的问题. (2认同)
  • @LasseVågsætherKarlsen,你是完全正确的 - 在杰里米库克的暗示之后我终于可以解决这个问题了,所以我更新了我的答案,然后投了他的答案.现在SO用户将找到他们寻找的解决方案! (2认同)