2015-09-17 4 views
0

У меня есть файл проекта, который должен построить другое решение. Я попытался с помощью задачи MSBuild для этого, как это:Задача MSBuild не создает файл решения

<MSBuild Projects="MySolution.sln" Properties="Configuration=$(Configuration)"/> 

Я пробовал много вариантов, как поставки жёстко прописанные конфигурации, целевой Rebuild и так далее. Building сообщает об ошибке при передаче неправильного имени решения, несуществующей конфигурации или цели и т. Д., Поэтому он определенно загружает решение и файлы проекта. Он выходит довольно быстро и не производит выход. Согласно документации и примерам, это должно работать. Я также пробовал передать ItemGroup для проекта, включая специфические для проекта свойства, как это предлагается в примерах, или в MSBuild - How to build a .NET solution file (in an XML task script) from pre-written command line commands, но это тоже не сработает. Он работает без ошибок, но без вывода.

При передаче списка файлов проекта (или одного файла проекта) он строит правильно, но проблема в том, что зависимости между проектами не разрешены должным образом. В конце концов, я должен предоставить все файлы проекта в решении и добавить их в список, чего я хочу избежать.

Итак, почему здание решения не работает, хотя оно и должно быть? Что здесь не так?

ответ

1

Это проект .net? Если это так, вам, вероятно, нужно пройти как на платформе, так и на конфигурацию.

<MSBuild 
    Projects="MySolution.sln" 
    Targets="build" 
    Properties="Configuration=$(Configuration);Platform=$(Platform)" /> 

Если проект содержит только веб-сайты и библиотеки, то платформа должна быть Any CPU, если ваше решение содержит только исполняемые файлы, то x86 или x64 или если это смесь различных типов платформы, то вы можете использовать mixed platforms

Чтобы проверить, что доступно, откройте решение в Visual Studio, щелкните правой кнопкой мыши по решению в проводнике решений и выберите «Configuration Manager», после чего у вас появится раскрывающийся список «Активные платформы решений» Active Solution Platforms

+0

Хорошо, это была проблема. Передача «Любой процессор» будет работать правильно. Однако передача $ (Platform) не работает, хотя я в любой сборке CPU. Пропускаемое значение - «AnyCPU» (без пробела). Любая идея, почему? – OregonGhost

+0

Это ошибка http://stackoverflow.com/a/4209924/568475 –

+0

Да, и я обнаружил еще одну ошибку: по какой-то причине при построении такого типа MSBuild не поддерживает зависимостей проекта. Официальное заявление состоит в том, что он делает это, когда в решении не найдено ни Конфигурация, либо Платформа, но в этом случае оба варианта. И если указать «неправильную» платформу, она ничего не построит. Я пытаюсь сделать это с помощью Exec вместо MSBuild, но это приводит к следующей проблеме (поиск msbuild.exe) ... – OregonGhost

Смежные вопросы