Чтобы эмулировать параметр «PerProject» в сборке XAML TFS 2013 в новых сборках на основе сборки Build 2015, я хотел бы иметь возможность передать SolutionName в msbuild аргументы командной строки без необходимости вручную устанавливать его каждый раз.
Я хотел бы сделать что-то вроде:
/p:OutputPath=$(Build.BinariesDirectory)\$(SolutionName)\
Где я хотел бы MsBuild вывести параметр $ (SolutionName). Но, передавая это в командной строке, новый бегун задачи заменит правильным целевым контуром и оставит $(SolutionName)
. К сожалению MsBuild впоследствии также оставляет имущество в покое:
Copying file from "obj\Debug\TFSBuild.exe" to "bin\debug\$(SolutionName)\TFSBuild.exe".
TFSBuild -> b\$(SolutionName)\TFSBuild.exe
Copying file from "obj\Debug\TFSBuild.pdb" to "b\$(SolutionName)\TFSBuild.pdb".
Я не могу вспомнить, как передать свойство командной строки и это делать поздно-расширение ... Любые советы?
Для тех, кто хочет подражать SingleFolder
или AsConfigured
, те легко:
SingleFolder -> /p:OutputPath="$(Build.BinariesDirectory)"
Asconfigured -> don't pass OutputPath
PerProject -> /p:OutputPath="$(Build.BinariesDirectory)\HARDCODESOLUTIONNAME"
Как насчет передачи '/ p: MyOutputPathBaseDir = $ (Build.BinariesDirectory) ', а затем в файле проекта установите для свойства OutputPath значение' $ (MyOutputPathBaseDir) \ $ (SolutionName) '? – stijn
Это потребует от меня редактирования всех файлов проекта, который работает, но тогда я мог бы также вставить мою собственную переменную и использовать AsConfigured – jessehouwing
* Это потребует от меня редактирования всех файлов проекта * не обязательно, msbuild имеет несколько точек расширения, где он может импортируйте произвольные файлы, которые вы передаете в командной строке. В вашем случае этот файл просто установит свойство, как я описал. – stijn