我正在尝试从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("@(VersionNumber)")]" />
我收到错误:
错误MSB4012:表达式“[assembly:AssemblyVersion(”@(VersionNumber)“)]”不能在此上下文中使用。项目列表不能与期望项目列表的其他字符串连接。使用分号分隔多个项目列表。
答案 0 :(得分:7)
我对MSBuild不太熟悉,但将Output
ReadLinesFromFile更改为属性,并使用$
在WriteLinesToFile中访问它似乎有效:
<Target Name="BeforeBuild">
<ReadLinesFromFile File="@(VersionFile)">
<Output TaskParameter="Lines" PropertyName="VersionNumber" />
</ReadLinesFromFile>
<WriteLinesToFile
File="output.txt"
Lines="[assembly: AssemblyVersion("$(VersionNumber)")]" />
</Target>