История до сих пор
У меня есть хорошее решение с проектом настольного приложения, несколькими библиотечными проектами и несколькими проектами средств разработки (также настольными приложениями). На данный момент мой сервер сборки выводит весь код в один 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, что делает 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) Как исправить эту команду для работы свойства
B) Как добиться того же выхода с минимальным трением