0
我正在嘗試使用MSBuild動態生成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)" />
當我做到這一點,該文件被讀,但它只是投入單一的間距和格式完全消失。我已經看過MSBuild.Community.Tasks.FileSystem中的ReadTextFromFile,但我無法弄清楚語法。
有人可以幫我一下嗎?
我看了Detokenise的文檔,我不確定這是我在找什麼......它如何從文件中讀取發行說明?我需要從本質上獲取發行說明文件的(確切)內容,並將它們放到SQL腳本中,替換SQL腳本模板(我已定義)中的releaseNotes標記。 – Brandon 2012-01-16 13:53:37
然後我沒有太大的幫助。 detokonise對於普通的令牌替換是有好處的,但是在文件中添加合併是一個不同的問題。祝你好運。這只是做同樣事情的一種不同方式。當文件編碼中混入了unicode和utf-8時,我從readlinesfromfile中遇到了一些問題。 – 2012-01-16 14:01:56