MSBuild: Проблемы с указанием платформы для дочерних сборок - PullRequest
3 голосов
/ 16 июля 2009

Можно ли указать целевую платформу (x64, x86) при создании проекта?

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

<MSBuild Projects="%(AgentProjectFiles.FullPath)" Properties="Architecture=x86;Configuration=$(Configuration);Optimize=$(Optimize);Platform=$(Platform);OutputPath=$(OutputDirectory)\Agent\;ReferencePath=$(ReferencePath);DebugSymbols=$(DebugSymbols);DebugType=none;" />

Как вы, вероятно, можете сказать, я добавил все возможное, что видел онлайн, в атрибут Properties в надежде, что он будет работать. Вы заметите, что для свойства Architecture я установил явно x86. $ (платформа) также установлен на x86. Я попробовал несколько перестановок, но безуспешно.

К сожалению, кажется, что независимо от того, что помещено в эти свойства, мои библиотеки классов - x86, но мои исполняемые файлы - x64.

Я подумал, что, возможно, проблема может заключаться в том, что свойства сборки, указанные в самом файле проекта, заставляют MSBuild игнорировать те, которые я передаю из MSBuild, но после изменения их на x86 у меня все еще остается та же проблема.

Есть идеи?

1 Ответ

3 голосов
/ 16 июля 2009

В объявлении элемента AgentProjectFiles вы определяете метаданные Properties . Так это выглядит так:

<ItemGroup>
    <AgentProjectFiles Include="something.proj">
        <Properties>SOME VALUES HERE</Properties>
    </AgentProjectFiles>
</ItemGroup>

Если вы определили это, тогда свойства, переданные в атрибут Properties свойства MSBuild , игнорируются. Я написал об этом MSBuild: Свойства и дополнительные свойства Известные метаданные .

Сайед Ибрагим Хашими

Моя книга: Внутри Microsoft Build Engine: Использование MSBuild и Team Foundation Build

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...