【问题标题】:Detect Visual Studio version from within MSBuild project从 MSBuild 项目中检测 Visual Studio 版本
【发布时间】:2012-08-13 13:37:48
【问题描述】:

BuildingInsideVisualStudio 属性提供了检测项目是否在 Visual Studio 中构建的能力。

有什么方法可以确定正在使用的 Visual Studio 版本吗?

【问题讨论】:

    标签: visual-studio msbuild


    【解决方案1】:

    使用 VisualStudioVersion 属性。

    【讨论】:

    • 在VS2008中创建了一个项目,在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />之后添加了以下内容: PrintVisualStudioInfo; $(CompileDependsOn) 将 VS2008 输出变为正常。结果:目标PrintVisualStudioInfo:VisualStudioVersion:''在VS2010上结果:PrintVisualStudioInfo:VisualStudioVersion:'10.0'
    【解决方案2】:

    由于 cmets 没有格式化,这里的调查显示 fsimonazzi 是正确的。 在 2008 年,未设置 VisualStudioVersion。在 2010 年(可能会更高)它是。

    在VS2008中创建了一个项目,在<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />之后添加了以下内容:

    <Target Name="PrintVisualStudioInfo">
      <Message Text="VisualStudioVersion: '$(VisualStudioVersion)'" />
    </Target>
    <PropertyGroup>
      <CompileDependsOn>
        PrintVisualStudioInfo;
        $(CompileDependsOn)
      </CompileDependsOn>
    </PropertyGroup>
    

    将 VS2008 输出调至正常。结果:

    Target PrintVisualStudioInfo:
        VisualStudioVersion: ''
    

    在 VS2010 上结果:

    PrintVisualStudioInfo:
       VisualStudioVersion: '10.0'
    

    【讨论】:

    • 您也可以在命令行中使用msbuild.exe MyProject.csproj /t:PrintVisualStudioInfo 运行它(提供msbuild.exe 和您的csproj 的正确位置)。
    【解决方案3】:

    根据this post,该属性从 VS2012 开始存在。它是在安装 .NET 4.5 时在 Microsoft.Common.targets 文件中定义的(检查原始 .NET 4.0 没有定义该属性)。

    【讨论】:

    • 不幸的是,the link 不再存在。 this post 是否包含您要指向的材料?
    • 看来是。因为所有这些文章都属于赛义德。但这对于 OP 来说真的无关紧要——我已经从那里引用了摘要——该属性从 VS2012/.NET4.5 开始可用。我的答案应该是对另一个答案的评论。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-08
    • 2013-09-30
    相关资源
    最近更新 更多