2012-10-08 29 views
3

從文件讀取單個值我想讀的MSBuild從文件版本號:中的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;)]" /> 

我得到一個錯誤:

error MSB4012: The expression "[assembly: AssemblyVersion("@(VersionNumber)")]" cannot be used in this context. Item lists cannot be concatenated with other strings where an item list is expected. Use a semicolon to separate multiple item lists.`

回答

7

我不是太熟悉的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>