История до сих пор
У меня есть отличное решение с проектом настольного приложения, несколькими проектами библиотек и парой проектов инструментов разработки (также настольных приложений). На данный момент мой сервер сборки выводит весь код в один OutputPath
. Таким образом, мы в конечном итоге с
drop-x.y.z\
Company.MainApplication.exe <-- main application
Company.MainApplicationCore.dll <-- libraries
Helper.exe <-- developer tools
Grapher.exe
Parser.exe
... <-- the rest of the output
Но мы растем, и люди за пределами нашей команды хотят получить доступ к нашим инструментам. Поэтому я хочу организовать выходной. Я решил, что нам нужно другое OutputPath
для исполняемого проекта
drop-x.y.z\
Company.MainApplication\
Company.MainApplication.exe <-- main application
Company.MainApplicationCore.dll <-- libraries
... <-- application specific output
Helper\
Helper.exe <-- developer tools
... <-- tool specific output
Grapher\
Grapher.exe
...
Parser\
Parser.exe
...
Что я сделал
Я нашел эту простую команду. Мне это нравится, потому что он сохраняет весь контекст Solution-dir Solution, который делает боль в msbuild.
msbuild /target:<ProjectName>
Например, из моего корня решения в качестве рабочего каталога я бы назвал
PS> msbuild /target:Helper /property:OutputPath="$pwd\out\Helper"
Я тестирую это из PowerShell, поэтому $pwd
разрешает полный путь к моему рабочему каталогу или корню решения в этом случае. Я получаю желаемый результат.
Однако, когда я запускаю эту команду
PS> msbuild /target:Company.MainApplication /property:OutputPath="$pwd\out\Company.MainApplication"
Я получаю следующее сообщение об ошибке (больше информации нет, я запускаю с /verbosity:diagnostic
)
Цель "Company.MainApplication" не существует в проекте.
Что мне нужно
Команда не выполняется в любом проекте с точкой или точками в имени. Я пробовал со многими комбинациями рабочих каталогов и свойств. Я пробовал несколько способов избежать значений свойств. Я также попытался запустить команду из <Task>
в файле целей.
Мне нужно знать либо
A) Как исправить эту команду для работы свойства
Б) Как добиться того же результата с минимальным трением