代码之家  ›  专栏  ›  技术社区  ›  Scott Weinstein

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

  •  31
  • Scott Weinstein  · 技术社区  · 14 年前

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

    4 回复  |  直到 14 年前
        1
  •  45
  •   Ohad Schneider    6 年前

    您应该使用的属性值是 BuildingInsideVisualStudio ProductVersion 在项目文件中声明,您不能使用它,因为无论是在VS内部生成还是通过msbuild.exe生成,它都具有相同的值。

    <PropertyGroup>
        <MyProp Condition=" '$(BuildingInsideVisualStudio)' == 'true' ">Foo</MyProp>  
        <MyProp Condition=" '$(BuildingInsideVisualStudio)' != 'true' ">Bar</MyProp> 
    </PropertyGroup>
    
        2
  •  1
  •   AakashM    14 年前

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

        3
  •  0
  •   Hans Passant    14 年前

    对, <ProductVersion>

        4
  •  0
  •   Franci Penov    14 年前

    <ProductVersion> 将为您提供运行生成进程的MSBuild版本。

    注意,在VS 2010中,构建过程可能以.NET 4或3.5为目标,如果您的条件编译依赖于MSBug版本本身或构建的目标框架和生成所使用的工具,则需要仔细考虑。如果您的条件基于目标框架,请使用 <TargetFrameworkVersion>

    当然,如果您的构建也可能在VS2008下运行,那么您需要在以下情况下支持适当的回退: < 不见了。