C# 7中的值元组在构建解决方案时使用MSBuild.exe失败,而不是项目。

3
我们在Jenkins中运行持续集成。最近,我们决定在一个Web项目中尝试使用C# 7元组。
项目在Visual Studio中编译没有问题,但当我们将其发送到构建服务器时却出现了错误。
错误信息如下:error CS8059: Feature 'tuples' is not available in C# 6. Please use language version 7 or greater. 我已经尝试了各种方法,从更新NuGet到撞墙。
我还安装了所需的NuGet包: Install-Package Microsoft.Net.Compilers Install-Package System.ValueTuple 最后,当我发现我可以发布每个单独的项目时,我有了突破口,只有在构建整个解决方案时才会出现错误。
这意味着它是有效的,但在解决方案级别上不起作用。 但为什么?我需要构建整个解决方案来运行针对我们代码库的单元测试。
因此,总结一下:
  • msbuild MySolution.sln失败!
  • msbuild MyProject.csproj + PublishProfile完全正常。

2
启用 MSBuild 诊断日志记录并进行比较。 - Lex Li
1
你是否在项目 -> 属性 -> 构建 -> 高级 -> 语言版本 中检查了语言版本?它应该是 c# 6.0。 - Oleg M
实际上应该是C# 7,这样就解决了。我忘记标记它为已解决。 - André Snede
1个回答

3

我已经解决了它。

我将Web项目的调试和发布设置中的语言版本更改为C# 7。在project.csproj文件中进行修改。

我还安装了所需的nuget软件包:

// Tells it to compile it according to the selected C# Language version
Install-Package Microsoft.Net.Compilers 
// Adds the value tuple support
Install-Package System.ValueTuple
// Tells it to use the Roslyn compiler
Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

1
我已将我的VS调试版本更新为使用最新的语言版本(最新的小版本而不是最新的大版本),但我还没有更新发布版本的配置。感谢指点! - Ian Yates
对我来说那很愚蠢:我在我的.csproj文件中更新了<LangVersion>7.3</LangVersion>,但我没有意识到每个构建配置都有一个单独的设置。因此我浪费了很多时间。感谢您带领我找到解决方案。 - Reuel Ribeiro

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接