IronRuby 无法编译使用'nameof'运算符的 c# 项目



我有一个包含许多解决方案的大型 WPF 应用程序,每个解决方案都有许多项目。IronRuby(v1.0.4(脚本用于按顺序编译所有项目。

问题陈述
IronRuby 脚本无法编译使用"nameof"运算符的项目,并出现以下错误:

The name 'nameof' does not exist in the current context
  • 在装有Visual Studio 2017和2019的计算机上可以看到故障。
  • 在装有Visual Studio 2015的机器上运行良好。
  • 如果我在VS 20XX中单独编译项目,项目会正确编译 - 但这违背了拥有IR脚本的目的。

我已经搜索了所有地方,但找不到它不适用于更高版本的Visual studio的原因。

软件栈
1. 铁红宝石版本: 1.0.4
2.净版本:4.5.2及以上
3.工作VS版本:2015更新3
3.(a( MSBuild 工具版本:14.0

C:\Program Files (x86(\MSBuild\14.0\Bin>MSBuild.exe -version Microsoft (R( 构建引擎版本 14.0.27522.0 版权所有 (C( Microsoft公司。保留所有权利。

14.0.27522.0

3.(b( 从命令提示符编译项目时的消息:

Microsoft (R) Build Engine version 14.0.27522.0
Copyright (C) Microsoft Corporation. All rights reserved.
  1. 非工作VS版本:2019(v16.2.3(
    4.(a( MSBuild 工具版本:16.0

C:\程序文件 (x86(\Microsoft 可视 Studio\2019\Enterprise\MSBuild\Current\Bin>MSBuild.exe -version Microsoft (R( 生成引擎版本 16.2.37902+b5aaefc9f for .NET 框架版权(C(Microsoft公司。保留所有权利。

16.2.37902.0

4.(b( 从命令提示符编译项目时的消息:

Microsoft (R( 构建引擎版本 4.7.3190.0 [Microsoft .
NET Framework,版本 4.0.30319.42000] 版权所有 (C( Microsoft公司
。保留所有权利。

  1. 两台计算机上的MSBuild版本给出相同的结果:
C:WindowsMicrosoft.NETFrameworkv4.0.30319>MSBuild.exe -version
Microsoft (R) Build Engine version 4.7.3190.0
[Microsoft .NET Framework, version 4.0.30319.42000]
Copyright (C) Microsoft Corporation. All rights reserved.
4.7.3190.0

将 3(a(、3(b( 与 4(a(、4(b( 进行比较,看起来更高 VS 版本的 wrt 构建引擎存在断开连接,但我无法解决阻止我进入更高 VS 版本的问题。

任何帮助,不胜感激。

谢谢,
RDV

要在其他人需要时添加更多详细信息:

在此处查看类似问题。nameof是 C# 6 功能,它至少需要 VS2015 的构建引擎。(MSBuide14.0(

所以实际上msbuild 14.0(VS2015(、msbuild 15.0(VS2017(、msbuild 16.0(VS2019(都可以很好地编译它。在VS2015之后,msbuild是一个单独的构建工具包,它不需要安装vs。所以构建服务器更方便。

C:\Windows\Microsoft.NET\Framework\v4.0.30319>MSBuild.exe

此版本来自 .net 4.0 框架,早于 msbuild 14.0,它不支持 C#6 功能。

适用于VS2017和VS2019的msbuild路径:C:Program Files (x86)Microsoft Visual Studio2017 or 2019build tools or VS versionmsbuild15.0 or currentbinmsbuild.exe。确保使用正确的 vs 版本并安装必要的工作负载有助于避免许多生成问题。希望它对某人有所帮助。

我的构建(ruby(脚本指向一个compile.rb类,该类具有硬编码版本以查找VS2015,如果未找到该版本,则脚本将使用v4.0构建,这就是为什么当我在2015年以上拥有VS时,我总是会看到v4.0。

def path_to_msbuild
msbuildVS2015path=File.join(ENV['PROGRAMFILES'],"MSBuild/14.0/Bin")
if File.exist?(msbuildVS2015path)
File.join(msbuildVS2015path, "/MSbuild.exe /verbosity:quiet")
else
versions = ["v4.0.30319", "v3.5", "v2.0.50727"]
path = File.join(ENV['windir'],"Microsoft.NET/Framework")

修复"msbuildVS2015path"后,构建工作正常(我还没有找到一种方法来检查任何已安装的 VS 版本,但出于我的工作目的,我硬编码了 VS2019 版本(。

相关内容

  • 没有找到相关文章

最新更新