У меня есть пользовательская цель MSBuild, частичный фрагмент следующим образом ..Как повторно запустить оценку свойств в целевой среде MSBuild?
<Target Name="PublishHtm">
<PropertyGroup>
<PublishHtmTemplateContents>$([System.IO.File]::ReadAllText($(PublishHtmTemplatePath)))</PublishHtmTemplateContents>
<PublishHtm>$(PublishHtmTemplateContents)</PublishHtm>
</PropertyGroup>
<WriteLinesToFile Lines="$(PublishHtm)" File="$(PublishDir)\publish.htm" Overwrite="true"/>
</Target>
Это попытка переделки для this solution в том, что я пытаюсь изолировать этот шаблон для внешнего файла. Шаблон содержит ссылки на свойства MSBuild, такие как $(ApplicationName)
. Выполняя это точно так, как описано в linked solution, он работает нормально, но при загрузке шаблона в виде строки ни одно из этих выражений свойств не оценивается к моменту, когда оно попадает в файл.
<SPAN CLASS="BannerTextApplication">$(ApplicationName)</SPAN>
Есть выражение/функция MSBuild я могу использовать, чтобы получить строку перепроверены с учетом контекста, что цель в настоящее время вызывается?
BTW Я бы предпочел не работать вокруг проблемы с помощью find/replace или regex replace и придерживаться механизма выражения MSBuild.
Использование Visual Studio 2012 & .NET Framework 4.5.
Вы должны поместить/пункт объявление свойства * внутри мишени *. См. Динамические свойства и элементы на странице https://msdn.microsoft.com/en-us/magazine/dd419659.aspx. –
Вы загружаете этот шаблон из внешнего файла. Это означает, что движок msbuild не будет делать никакого расширения свойства в самом шаблоне. Таким образом, ваш $ (PublishHtmTemplateContents) - это просто текстовая строка, считанная из файла. И вы просто переписываете его в $ (PublishHtm) как текстовое значение. Двигатель не работает таким образом. Вы можете попытаться обернуть шаблон в какой-то форме цели в отдельный файл, а затем создать его с помощью задачи msbuild. –
@SayedIbrahimHashimi, глядя на мой вопрос. Я читаю объявление своей собственности внутри целевого узла, и в вашей статье у меня есть TL, DR, поскольку в MSBuild есть TMI. Что вы получаете в? Можете ли вы обобщить разработку? –