Использование MSBuild.ExtensionPack.FileSystem.File Заменить на vdproj
Я пытаюсь заменить ProductName, хранящийся в проекте установки Visual Studio, выполнив регулярное выражение для файла в моем сценарии msbuild. Для замены regEx я пытаюсь использовать пакет расширений msbuild и, в частности, задачу File. Цель внутри моего скрипта msbuild выглядит так:
<Target Name="CustomiseMsi">
<PropertyGroup>
<RegExPattern>
<![CDATA[(?:\""ProductName\"" = \""8:.*)]]>
</RegExPattern>
<RegExReplacement>
<![CDATA["\"ProductName\" = \"8:MyApp v1.0\""]]>
</RegExReplacement>
<RegExOutput></RegExOutput>
</PropertyGroup>
<MSBuild.ExtensionPack.FileSystem.File
TaskAction="Replace"
RegexPattern="$(RegExPattern)"
Replacement="$(RegExReplacement)"
Files="@(AbsolutePathToVdProjToParse)">
</MSBuild.ExtensionPack.FileSystem.File></Target>
Когда эта цель запускается, я получаю следующий вывод, но файл остается неизменным.
CustomiseMsi:
Processing File Collection
Processing File: C:\pathHere\mySetup.vdproj
Я иду по этому правильному пути? Кто-нибудь сделал регулярное выражение обновлено на vdproj (или что-нибудь еще) таким образом?
1 ответ
Решение
У меня была такая же проблема, и после нескольких попыток, я получил это на работу...
<MSBuild.ExtensionPack.FileSystem.File TaskAction="Replace"
TextEncoding="ASCII" RegexPattern='"ProductVersion" = "8:.*"'
Replacement='"ProductVersion" = "8:$(Version)"'
Files="%(Solution.DeploymentProject)"/>
Это просто заменит строку ProductVersion версией, которую я имею в моей переменной Solution.DeploymentProject.
Я не верю, что вам вообще нужно связываться с CDATA.