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 不太熟悉,但将ReadLinesFromFileOutput更改为属性并使用在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 回答