TFS 2012/MSBuild:向项目文件csproj C中已定义的条件编译符号添加其他条件编译符号#

TFS 2012/MSBuild:向项目文件csproj C中已定义的条件编译符号添加其他条件编译符号#,tfs,msbuild,conditional-compilation,csproj,Tfs,Msbuild,Conditional Compilation,Csproj,我有一个大的解决方案,并且(外部库依赖项)我设置了项目属性,其中基于条件符号,我可以链接到旧版本(缺少符号)或新版本(存在符号),还可以根据更改的接口进行一些代码更改 我让它作为TFS构建运行了很长一段时间(旧的、稳定的版本),但现在需要让新版本并行运行。因此,我添加了/p:DefineConstants=“NEW\u LIBRARY”作为MSBuild参数 这里的问题是,我在其他地方的解决方案中已经有了条件符号,并希望保留这些符号,但它们被该参数覆盖 如何在一个构建中而不是在另一个构建中添加条

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

我让它作为TFS构建运行了很长一段时间(旧的、稳定的版本),但现在需要让新版本并行运行。因此,我添加了/p:DefineConstants=“NEW\u LIBRARY”作为MSBuild参数

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

如何在一个构建中而不是在另一个构建中添加条件符号(好的,不添加条件符号很简单),同时保持每个项目属性中已定义的符号不变

非常感谢

因此您可以传递
配置
属性,即
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>

pdbonly
真的
垃圾箱\
痕迹;新图书馆
促使
4.

>

谢谢!这可能真的管用。我确实对添加“仅用于测试”的项目配置记忆犹新,然后想将这些配置作为最流行的默认配置打开,这反过来会导致完全不想要的结果。:)除此之外,您的解决方案将比我现在的解决方案更干净,只需切换(本地)配置,而不是编辑定义。