Прочитать (правильно отформатированный) содержимое файла с помощью MSBuild - PullRequest
0 голосов
/ 14 января 2012

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

Одним из требований этого сценария является получение примечаний к выпуску продукта из текстового файла и помещение их в оператор вставки в сценарии 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)">
        <Output TaskParameter="Lines" ItemName="FileContents" />
</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>    

<TemplateFile Template="$(SQLFileTemplate)" OutputFileName="$(SQLFileName)" Tokens="@(Tokens)" />

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

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

1 Ответ

0 голосов
/ 16 января 2012

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...