0

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

其他项目以这种方式定义了各种符号。

从 MSBUILD 构建时,由于某种奇怪的原因,MYSYBOL 被忽略,并且应用程序的行为就像从未设置过一样。

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

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

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

4

2 回答 2

0

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

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

最终不得不传递整个解决方案中每个项目使用的每个符号。

太糟糕了 :(

于 2012-11-09T08:17:08.660 回答
0

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

<PropertyGroup>
    <DefineConstants>MYSYMBOL;$(DefineConstants)</DefineConstants>
</PropertyGroup>
于 2012-11-09T17:34:15.500 回答