Visual studio 2015 IronRuby无法编译使用';名称';操作人员

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中单独编

我有一个大型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中单独编译项目,那么项目就被正确编译了——但这与拥有IR脚本的目的背道而驰
我到处都搜索过,但找不到它不适用于更高版本Visual studio的原因

软件堆栈
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.
  • 非工作VS版本:2019(v16.2.3)
    4.(a)MSBuild工具版本:16.0
  • C:\Program Files(x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin>MSBuild.exe-版本 Microsoft(R)针对.NET的生成引擎版本16.2.37902+b5aaefc9f 框架版权(C)微软公司。版权所有

    16.2.37902.0

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

    Microsoft(R)生成引擎版本4.7.3190.0
    [Microsoft.NET Framework,版本4.0.30319.42000]版权所有(C)Microsoft
    公司版权所有

  • 两台计算机上的MSBuild版本给出相同的结果:
  • 将3(a),3(b)与4(a),4(b)进行比较,看起来在更高版本的wrt构建引擎中存在断开连接的情况,但我无法解决阻止我使用更高版本的问题

    感谢您的帮助

    谢谢,

    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")