我有一个项目,我在项目属性中添加了一个编译符号(MYSYMBOL)。从VS构建时,它工作正常,应用程序也会相应地运行。
其他项目有这样定义的各种符号。
从MSBUILD构建时,MYSYBOL因某些奇怪的原因被忽略,应用程序就像从未设置过一样。
我尝试将/p:"DefineConstants=MYSYMBOL"
添加到msbuild调用中,但是构建失败了,因为它似乎用这个单独替换每个项目的其他符号,所以一个程序集例如需要MYSYMBOL + OTHERSYMBOL
但现在只获得MYSYMBOL
。
这很奇怪,因为当通过msbuild构建时,它实际上对那些拥有它的项目使用了OTHERSYMBOL。
有没有人知道在通过msbuild构建时,不能在项目属性上导致MYSYMBOL
的原因是什么?
答案 0 :(得分:0)
原来,构建脚本自己声明了一组编译器符号,覆盖了单独项目设置中的符号,这反过来导致了这个问题。
据我了解,您无法添加一个或多个编译符号,因为您声明的任何内容都会替换项目的符号。
完成必须传递整个解决方案中每个项目使用的每个符号。
太糟糕了:(
答案 1 :(得分:0)
您需要在DefineConstants列表中添加新符号(而不是覆盖整个DefineConstants列表)。这将做你想要的:
<PropertyGroup>
<DefineConstants>MYSYMBOL;$(DefineConstants)</DefineConstants>
</PropertyGroup>