2014-09-22 7 views
0

У меня есть импорт .msbuild, который определяет свойство группы, содержащее определение препроцессора, среди прочего:Настройки DefineConstants динамически с помощью MSBuild импорта

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

Это <import> издания в обоих csproj и vcxproj файлы. Во время сборки препроцессор C# не имеет видимости определенных констант. Тем не менее, эквивалент C++ определение препроцессора в том же файле работает правильно, и константы обнаружены:

<ItemDefinitionGroup> 
    <ClCompile> 
    <PreprocessorDefinitions>$(PreProcessorDefinitions);MY_CONSTANT_VALUE</PreprocessorDefinitions> 
    </ClCompile> 
<ItemDefinitionGroup> 

Любые идеи, почему это работает только в C++?

ответ

0

группы по умолчанию свойства декларация не угождать о ранее существовало свойства и определен следующим образом:

<DefineConstants>TRACE</DefineConstants> 

Поэтому убедитесь, что вы импортируете файл .msbuild в конце вашего .csproj.vbproj, не в начале.

Если это не помогает - можете ли вы предоставить журнал msbuild с диагностическим уровнем многословия и ссылкой для связи здесь.

+0

Спасибо, я попытался импортировать в конце csproj, но константа все еще не определена. В конце я модифицировал в каждом csproj, чтобы содержать новый макрос, определенный в импорте .msbuild. На данный момент это прекрасно, так как мне нужна только гибкость для препроцессорных констант, но было бы неплохо унаследовать целые блоки XML так же, как файлы vcxproj. – pdm2011