MSBuildを使用してSQLスクリプトを動的に生成しようとしています。スクリプトはいくつかのテーブルなどを更新する責任があります...ビルド後。MSBuildを使用してファイルの正しい形式の内容を読み取る
このスクリプトの要件の1つは、テキストファイルから製品のリリースノートを取得し、SQLスクリプトのinsert文に挿入することです。
テンプレートファイルの値を置き換えてSQLスクリプトを生成するのに、TemplateFileを使用していますが、期待どおりに動作しています。私の問題は、リリースノートファイルを読むときに始まります。以下は、私のコードです:私はこれを行うと
<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)" />
は、ファイルが読み込まれているが、それは単に1つのスペースに入れていますし、フォーマットが完全になくなっています。私はMSBuild.Community.Tasks.FileSystemでReadTextFromFileを見てきましたが、構文を理解することはできません。
誰かが私に手を差し伸べることはできますか?
私はDetokeniseのドキュメンテーションを見ましたが、私が探しているものではないと思います...ファイルからリリースノートをどうやって読むのですか?私は本質的に、リリースノートファイルの(正確な)内容を取って、SQLスクリプトに入れて、SQLスクリプトテンプレートのreleaseNotesトークン(これは私が定義したもの)を置き換える必要があります。 – Brandon
それから私はあまり役に立たない。 detokoniseは通常のトークンの置換には適していますが、ファイル内でのマージの追加は別の問題です。がんばろう。それは、同じことをやるという別のやり方にすぎません。ファイルのエンコーディングがUnicodeとutf-8を混在させたとき、私はreadlinesfromfileからいくつかの問題を抱えています。 –