msbuild - 如何从外部文件中读取属性值?

标签 msbuild build build-process csproj

我在构建过程中自动生成了 AssemblyInfo.cs 文件。这是 .csproj 文件的一部分:

<PropertyGroup>
    <Major>2</Major>
    <Minor>3</Minor>
    <Build>0</Build>
    <Revision>0</Revision>
</PropertyGroup>
<Target Name="BeforeBuild">
    <SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="C:\Program Files\VisualSVN Server\bin">
        <Output TaskParameter="Revision" PropertyName="Revision" />
    </SvnVersion>
    <AssemblyInfo CodeLanguage="CS" 
                  OutputFile="$(MSBuildProjectDirectory)\Properties\VersionInfo.cs" 
                  AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)" 
                  AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"/>
</Target>

但我不知道如何在 .csproj 文件之外指定 MajorMinor 属性,因此我不必每次想更改版本时都卸载项目.我需要从项目内的特殊文本文件中加载它们,或者以某种方式在项目属性对话框中设置它们。有什么建议吗?

最佳答案

使用 ReadLinesFromFile 在单独的文件中制作版本:

<ReadLinesFromFile File="Properties\Version.txt">
    <Output TaskParameter="Lines" ItemName="Ver" />
</ReadLinesFromFile>
<SvnVersion LocalPath="$(MSBuildProjectDirectory)" ToolPath="C:\Program Files (x86)\VisualSVN Server\bin">
    <Output TaskParameter="Revision" PropertyName="Revision" />
</SvnVersion>
<Message Text="Version: @(Ver).$(Revision)" />
<AssemblyInfo 
    CodeLanguage="CS" 
    OutputFile="$(MSBuildProjectDirectory)\Properties\VersionInfo.cs" 
    AssemblyVersion="@(Ver).$(Revision)" 
    AssemblyFileVersion="@(Ver).$(Revision)"/>

关于msbuild - 如何从外部文件中读取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5746242/

相关文章:

asp.net - 是否在不安装Windows SDK的情况下安装和使用aspnet_merge.exe?

c++ - Bazel 构建命令行将 copt 参数传递给特定的 cc_library/cc_binary?

.net - MSBuild 和 F# 的 FAKE 有什么区别?

visual-studio - 构建 ASP.NET 网站项目时如何禁用 "Validating Web Site"步骤?

java - 如何在 Eclipse 中为 Glassfish 服务器构建 .war 文件

jenkins - 为什么 MSbuild 不使用 Jenkins 在单个操作中构建多个项目?

msbuild - 如何在命令行中将参数传递给蜡烛并让它覆盖目标.wxs中的值

c# - MSBuild.exe 输出编码

用于lib和可执行文件的c++ CMake项目结构

java - 是否可以使用 Rake 来自动化 Android 应用程序的构建过程?