通过MSBUILD生成时未使用编译符号?

通过MSBUILD生成时未使用编译符号?,msbuild,symbols,Msbuild,Symbols,我有一个在项目属性中添加了编译符号(MYSYMBOL)的项目。当从VS构建时,它工作得很好,应用程序也会相应地进行操作 其他项目有这样定义的各种符号 从MSBUILD生成时,出于某种奇怪的原因,MYSYBOL被忽略,应用程序的行为就好像从未设置过一样 我尝试将/p:“DefineConstants=MYSYMBOL”添加到msbuild调用中,但构建失败,因为它似乎仅用此符号替换每个项目的其他符号,因此一个程序集(例如)需要MYSYMBOL+OTHERSYMBOL,但现在只获得MYSYMBOL

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

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

从MSBUILD生成时,出于某种奇怪的原因,MYSYBOL被忽略,应用程序的行为就好像从未设置过一样

我尝试将
/p:“DefineConstants=MYSYMBOL”
添加到msbuild调用中,但构建失败,因为它似乎仅用此符号替换每个项目的其他符号,因此一个程序集(例如)需要
MYSYMBOL+OTHERSYMBOL
,但现在只获得
MYSYMBOL

这很奇怪,因为在通过msbuild进行构建时,它确实会对拥有它的项目使用OTHERSYMBOL


是否有人知道是什么原因导致通过msbuild生成时项目属性上的
MYSYMBOL
未被使用?

结果是生成脚本自己声明了一组编译器符号,覆盖了单独项目设置中的符号,从而导致了此问题

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

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


太糟糕了:(

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

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

MYSYMBOL;$(定义常量)