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

问题描述 投票:0回答:4

Visual Studio 设置了 MSBuild 属性吗?我希望根据 Visual Studio 的版本(如果有)有一些条件行为。

visual-studio msbuild
4个回答
62
投票

您应该使用的属性值是

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

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

1
投票

要直接解决标题中的问题 - 如果您只是想知道您是否是从 VS 构建的,请检查

IsDesktopBuild
的值,它将相应地返回
true
false


0
投票

是的,

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


0
投票

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

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

<TargetFrameworkVersion>

当然,如果您的构建也可能在 VS 2008 下运行,则如果缺少

<TargetFrameworkVersion>
,您需要支持适当的回退。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.