5

MSBuild のファイルからバージョン番号を読み取ろうとしています。

<ItemGroup>
    <VersionFile Include="Properties\VERSION" />
</ItemGroup>
<Target Name="BeforeBuild">
    <ReadLinesFromFile File="@(VersionFile)">
        <Output TaskParameter="Lines" ItemName="VersionNumber" />
    </ReadLinesFromFile>
</Target>

このファイルの最初の行だけが必要です。その値を の別の文字列と連結するにはどうすればよいWriteLinesToFileですか? これは動作しません:

<WriteLinesToFile
    File="$(AssemblyVersionFile)"
    Lines="[assembly: AssemblyVersion(&quot;@(VersionNumber)&quot;)]" />

エラーが発生します:

エラー MSB4012: 式 "[assembly: AssemblyVersion("@(VersionNumber)")]" は、このコンテキストでは使用できません。アイテム リストは、アイテム リストが期待される他の文字列と連結できません。複数のアイテム リストを区切るには、セミコロンを使用します。

4

1 に答える 1

11

私はMSBuildにあまり慣れていませんがOutputReadLinesFromFileをプロパティに変更し、 WriteLinesToFile$でアクセスするために使用するとうまくいくようです:

<Target Name="BeforeBuild">
    <ReadLinesFromFile File="@(VersionFile)">
        <Output TaskParameter="Lines" PropertyName="VersionNumber" />
    </ReadLinesFromFile>
    <WriteLinesToFile
        File="output.txt"
        Lines="[assembly: AssemblyVersion(&quot;$(VersionNumber)&quot;)]" />
</Target>
于 2012-10-08T16:53:17.223 に答える