从MSBuild项目中检测Visual Studio版本

Waf*_*fle 8 msbuild visual-studio

BuildingInsideVisualStudio属性提供检测项目是否在Visual Studio中建立的能力.

有没有办法确定使用哪个版本的Visual Studio?

fsi*_*zzi 7

使用VisualStudioVersion属性.


Waf*_*fle 7

由于评论没有格式化,这里的调查显示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>
Run Code Online (Sandbox Code Playgroud)

将VS2008输出转为正常.结果:

Target PrintVisualStudioInfo:
    VisualStudioVersion: ''
Run Code Online (Sandbox Code Playgroud)

在VS2010上结果:

PrintVisualStudioInfo:
   VisualStudioVersion: '10.0'
Run Code Online (Sandbox Code Playgroud)


Ver*_*igo 5

根据这篇文章,该物业从VS2012开始存在.它在Microsoft.Common.targets安装.NET 4.5时在文件中定义(检查原始.NET 4.0没有定义属性).