Visual studio 2015 IronRuby无法编译使用';名称';操作人员
我有一个大型WPF应用程序,其中包含许多解决方案,每个解决方案都有许多项目。IronRuby(v1.0.4)脚本用于按顺序编译所有项目 问题陈述:Visual studio 2015 IronRuby无法编译使用';名称';操作人员,visual-studio-2015,msbuild,visual-studio-2019,nameof,Visual Studio 2015,Msbuild,Visual Studio 2019,Nameof,我有一个大型WPF应用程序,其中包含许多解决方案,每个解决方案都有许多项目。IronRuby(v1.0.4)脚本用于按顺序编译所有项目 问题陈述: IronRuby脚本无法编译使用“nameof”运算符的项目,错误如下: The name 'nameof' does not exist in the current context 在配备Visual Studio 2017和2019的机器上可以看到故障 在使用Visual Studio 2015的机器上运行良好 如果我在VS20xx中单独编
IronRuby脚本无法编译使用“nameof”运算符的项目,错误如下:
The name 'nameof' does not exist in the current context
- 在配备Visual Studio 2017和2019的机器上可以看到故障
- 在使用Visual Studio 2015的机器上运行良好
- 如果我在VS20xx中单独编译项目,那么项目就被正确编译了——但这与拥有IR脚本的目的背道而驰
1.IronRuby verion:1.0.4
2.Net版本:4.5.2及以上
3.工作与版本:2015年更新3
3.(a)MSBuild工具版本:14.0 C:\ProgramFiles(x86)\MSBuild\14.0\Bin>MSBuild.exe-版本 Microsoft(R)构建引擎版本14.0.27522.0版权所有(C) 微软公司。版权所有 14.0.27522.0 3.(b)从命令提示符编译项目时的消息:
Microsoft (R) Build Engine version 14.0.27522.0
Copyright (C) Microsoft Corporation. All rights reserved.
4.(a)MSBuild工具版本:16.0
Microsoft(R)生成引擎版本4.7.3190.0
[Microsoft.NET Framework,版本4.0.30319.42000]版权所有(C)Microsoft
公司版权所有
RDV要添加更多详细信息,以防其他人需要它: 见类似问题
nameof
是C#6特性,它至少需要VS2015的生成引擎。(msbuild 14.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 framework,早于msbuild 14.0,不支持C#6功能
适用于VS2017和VS2019的msbuild路径:
C:\Program Files(x86)\Microsoft Visual Studio\2017或2019\build tools或VS version\msbuild\15.0或current\bin\msbuild.exe
。确保使用正确的vs版本并安装必要的工作负载可以帮助避免许多构建问题。希望它对其他人有所帮助。我的构建(ruby)脚本指向一个compile.rb类,这个类有硬编码版本来查找VS2015,如果找不到该版本,那么脚本将使用v4.0构建,这就是为什么我在VS高于2015时总是看到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版本)。最终发现ironruby脚本指向Visual Studio MSBuild版本。我修复了它,现在它的工作很好。嗨RDV,你可以考虑分享你的发现和解决细节作为答案,并标记它。因此,有用的信息更容易被需要它的人找到,只是一个提醒:)
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")