Прочитайте (правильно отформатированное) содержимое файла с помощью MSBuild

Я пытаюсь динамически генерировать SQL-скрипт, используя MSBuild. Скрипт отвечает за обновление некоторых таблиц и т.д. Post-build.

Одним из требований этого скрипта является извлечение заметок продукта из текстового файла и размещение их в инструкции insert в сценарии SQL.

Я использую TemplateFile для замены значений в шаблоне и генерации SQL-скрипта, и он работает как ожидалось. Моя проблема начинается, когда я пытаюсь прочитать файл заметок выпуска. Ниже приведен мой код:

<propertygroup>
 <sqlfiletemplate>Update Product Table.template</sqlfiletemplate>
 <sqlfilename>Update Product Table.sql</sqlfilename> 
 <releasenotesfile>Release Notes.txt</releasenotesfile>
</propertygroup>

<readlinesfromfile file="$(ReleaseNotesFile)">
 </readlinesfromfile>

<itemgroup>
 <tokens include="releaseDate">
 <replacementvalue>$(buildDate)</replacementvalue>
 </tokens>
 <tokens include="releaseNotes">
 <!--Escape the CR LF because MSBuild will replace them with semicolon-->
 <replacementvalue>@(FileContents, '%0a%0d')</replacementvalue>
 </tokens>
 <tokens include="releaseLevel">
 <replacementvalue>0</replacementvalue>
 </tokens>
 <tokens include="currentVersionInts">
 <replacementvalue>@(versionInts)</replacementvalue>
 </tokens>
 <tokens include="currentVersion">
 <replacementvalue>$(GuiVersion)</replacementvalue>
 </tokens>
 <tokens include="productVersionId"> 
 <replacementvalue>$(productId)</replacementvalue>
 </tokens>
</itemgroup>

Когда я это делаю, файл читается, но он просто помещается в один интервал, и формат полностью уходит. Я посмотрел на ReadTextFromFile в MSBuild.Community.Tasks.FileSystem, но я не могу понять синтаксис.

Может ли кто-нибудь дать мне руку для этого?

1 ответ

Похоже, вы пытаетесь заменить токены в файле? Я не думаю, что вам нужно пройти через чтение и запись файла. Вы можете использовать задачу detokenise в пакете расширения для достижения тех же результатов. См.: http://www.msbuildextensionpack.com/help/4.0.4.0/index.html.

Хотя я использую задачи сообщества, я думаю, что пакет расширения имеет гораздо больше возможностей, чем задачи сообщества.

licensed under cc by-sa 3.0 with attribution.