Передайте значение из TeamBuild в MSBuild
-
20-08-2019 - |
Вопрос
У меня есть сборка, которая выполняется в TFS TeamBuild.Я хочу передать свойство из этого в MSBuild, которое выполняется для каждого проекта, созданного TFSBuild.proj.
Пример:
TFSBuild.проект
<PropertyGroup>
<Version>0.0.0.0</Version>
</PropertyGroup>
<Target Name="BuildNumberOverrideTarget"
DependsOnTargets="AfterInitializeWorkspace">
<!--Code that loads the version from a file (removed).-->
<PropertyGroup>
<!--Save off the version.-->
<Version>$(TxCompleteVersion)</Version>
</PropertyGroup>
MyWIXProjectFile.wixproj Файл MyWIXProjectFile.wixproj
<Target Name="BeforeBuild">
<PropertyGroup>
<!--If Version is defined then use that.
Else just use all zeros to show that this is a developer built version-->
<CurrentVersion Condition="'$(Version)' == ''" >0.0.0.0</CurrentVersion>
<CurrentVersion Condition="'$(Version)' != ''" >$(Version)</CurrentVersion>
</PropertyGroup>
<Message Condition="'$(Version)' == ''"
Text="Version info is empty (i.e. a developer build). Version set to $(CurrentVersion)"/>
</Target>
Когда создается MyWixProjectFile.wixproj, каждый раз печатается сообщение, показывающее, что $ (Version) является пустым.
Есть ли какой-нибудь способ, которым я могу получить файл проекта, чтобы увидеть свойства TFSBuild.proj?
Ваккано
Решение 2
Это делается с помощью метаданных свойств в теге SolutionToBuild.Например:
<ItemGroup>
<SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisOne.sln">
<Targets></Targets>
<Properties>Change=True</Properties>
</SolutionToBuild>
<SolutionToBuild Include="$(BuildProjectFolderPath)\ChangeThisToo.sln">
<Targets></Targets>
<Properties>Change=True</Properties>
</SolutionToBuild>
<SolutionToBuild Include="$(BuildProjectFolderPath)\DontChangeThis.sln">
<Targets></Targets>
<Properties>Don'tChange=False</Properties>
</SolutionToBuild>
</ItemGroup>
Другие советы
Я не эксперт в Wix, но я нашел это и подумал, что вы могли бы попробовать.
Вариант 1
Используйте MSBuild для прямого вызова MyWIXProjectFile.wixproj и передачи Version в качестве свойства
Вариант 2
Перенесите сборку wix в его собственный автономный скрипт, а затем используйте MSBuild для прямого вызова и передачи всех необходимых свойств.У меня есть блог с полной реализацией, делающий это по адресу http://blog.newagesolution.net/2008/06/how-to-use-msbuild-and-wix-to-msi.html это может представлять для вас интерес.