【问题标题】:TFS 2012/MSBuild: adding additional conditional compilation symbols to the ones already defined in project file csproj C#TFS 2012/MSBuild:向项目文件 csproj C# 中已定义的符号添加额外的条件编译符号
【发布时间】:2013-12-27 17:35:03
【问题描述】:

我有一个大型解决方案,并且(外部库依赖项)我已经设置了项目属性,其中基于条件符号我链接到旧版本(缺少符号)或新版本(存在符号),还有一些基于更改的接口更改代码。

我已经将它作为 TFS 构建运行了很长一段时间(旧的稳定版本),但现在需要让新版本也并行运行。所以我添加了 /p:DefineConstants="NEW_LIBRARY" 作为 MSBuild 参数。

这里的问题是我已经在其他地方的解决方案中有条件符号并希望保留它们,但它们被该参数覆盖。

如何在一个构建中而不是另一个构建中添加条件符号(好吧,不添加它是微不足道的),同时保持每个项目属性中已经定义的符号不变?

非常感谢

【问题讨论】:

    标签: tfs msbuild conditional-compilation csproj


    【解决方案1】:

    Create a new project configuration 所以你可以只传递Configuration 属性,即ReleaseNewLib

      <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseNewLib|AnyCPU' ">
        <DebugType>pdbonly</DebugType>
        <Optimize>true</Optimize>
        <OutputPath>bin\</OutputPath>
        <DefineConstants>TRACE;NEW_LIBRARY</DefineConstants>
        <ErrorReport>prompt</ErrorReport>
        <WarningLevel>4</WarningLevel>
      </PropertyGroup>
    

    >

    【讨论】:

    • 谢谢!这可能真的有效。我确实对添加“仅用于测试”的项目配置有很不好的记忆,然后 VS 考虑将这些配置打开为最流行的默认设置,这反过来又会导致完全不需要的结果。 :) 除此之外,您的解决方案将比我现在拥有的更清洁,只需切换(本地)配置,而不是编辑定义。
    猜你喜欢
    • 2010-10-03
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2010-12-31
    • 1970-01-01
    • 2010-11-16
    • 1970-01-01
    • 2013-11-03
    相关资源
    最近更新 更多