在MSBuild中,可以确定我是否在Visual Studio中运行

时间:2010-04-28 16:51:56

标签: visual-studio msbuild

Visual Studio设置的任何MSBuild属性是什么?我希望有一些条件行为取决于visual studio的版本(如果有的话)。

4 个答案:

答案 0 :(得分:40)

您应该使用的属性值是BuildingInsideVisualStudio,当您在Visual Studio内部构建时,此属性将设置为true。由于在项目文件中声明了ProductVersion,因此无论是在VS内构建还是通过msbuild.exe构建它都具有相同的值。

<PropertyGroup>
    <MyProp Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">Foo</MyProp>  
    <MyProp Condition=" '$(BuildingInsideVisualStudio)' != 'true' ">Bar</MyProp> 
</PropertyGroup>

答案 1 :(得分:1)

要直接解决标题中的问题 - 如果您只是想知道自己是否是使用VS构建的,请检查IsDesktopBuild的值,该值将返回true或{{1}适当的。

答案 2 :(得分:0)

是的,<ProductVersion>列在项目文件中。它与Visual Studio版本号匹配。

答案 3 :(得分:0)

<ProductVersion>将为您提供运行构建过程的MSBuild版本。

请注意,在VS 2010中,构建过程可能针对.Net 4.0或3.5您需要仔细考虑条件编译是否依赖于msbuild版本本身或构建的目标框架以及构建使用的工具。如果您的条件基于目标框架,请使用<TargetFrameworkVersion>

当然,如果你的版本也可以在VS 2008下运行,那么如果缺少<TargetFrameworkVersion>,你需要支持正确的回退。