编译通过MSBUILD构建时未使用的符号?

时间:2012-11-09 07:13:42

标签: msbuild symbols

我有一个项目,我在项目属性中添加了一个编译符号(MYSYMBOL)。从VS构建时,它工作正常,应用程序也会相应地运行。

其他项目有这样定义的各种符号。

从MSBUILD构建时,MYSYBOL因某些奇怪的原因被忽略,应用程序就像从未设置过一样。

我尝试将/p:"DefineConstants=MYSYMBOL"添加到msbuild调用中,但是构建失败了,因为它似乎用这个单独替换每个项目的其他符号,所以一个程序集例如需要MYSYMBOL + OTHERSYMBOL但现在只获得MYSYMBOL

这很奇怪,因为当通过msbuild构建时,它实际上对那些拥有它的项目使用了OTHERSYMBOL。

有没有人知道在通过msbuild构建时,不能在项目属性上导致MYSYMBOL的原因是什么?

2 个答案:

答案 0 :(得分:0)

原来,构建脚本自己声明了一组编译器符号,覆盖了单独项目设置中的符号,这反过来导致了这个问题。

据我了解,您无法添加一个或多个编译符号,因为您声明的任何内容都会替换项目的符号。

完成必须传递整个解决方案中每个项目使用的每个符号。

太糟糕了:(

答案 1 :(得分:0)

您需要在DefineConstants列表中添加新符号(而不是覆盖整个DefineConstants列表)。这将做你想要的:

<PropertyGroup>
    <DefineConstants>MYSYMBOL;$(DefineConstants)</DefineConstants>
</PropertyGroup>