Sneal的回答是非常有益的,但我想展示一下我居然落得這樣做。我沒有編輯csproj文件(有幾個),而是將任務添加到我的構建腳本中。這裏有一個片段:
<PropertyGroup>
<ProductName>MyApp</ProductName>
<CompanyName>MyCompany</CompanyName>
<Major>1</Major>
<Minor>0</Minor>
<Build>0</Build>
<Revision>0</Revision>
</PropertyGroup>
<ItemGroup>
<AssemblyVersionFiles Include="..\MyMainProject\Properties\AssemblyInfo.cs"/>
</ItemGroup>
<Target Name="AssemblyVersionMAIN" Inputs="@(AssemblyVersionFiles)" Outputs="UpdatedAssemblyVersionFiles">
<Attrib Files="%(AssemblyVersionFiles.FullPath)" Normal="true"/>
<AssemblyInfo
CodeLanguage="CS"
OutputFile="%(AssemblyVersionFiles.FullPath)"
AssemblyProduct="$(ProductName)"
AssemblyTitle="$(ProductName)"
AssemblyCompany="$(CompanyName)"
AssemblyCopyright="© $(CompanyName) 2010"
AssemblyVersion="$(Major).$(Minor).$(Build).$(Revision)"
AssemblyFileVersion="$(Major).$(Minor).$(Build).$(Revision)"
AssemblyInformationalVersion="$(Major).$(Minor).$(Build).$(Revision)">
<Output TaskParameter="OutputFile" ItemName="UpdatedAssemblyVersionFiles"/>
</AssemblyInfo>
</Target>
<Target Name="Compile" DependsOnTargets="AssemblyVersionMAIN">
<MSBuild Projects="..\MySolution.sln"
Properties="Configuration=Release;Platform=x86;Optimize=true" />
</Target>
然後,我可以通過命令行或批處理腳本重寫我的變量,像這樣:
set MAJ=1
set MIN=2
set BLD=3
set REV=4
msbuild buildScript.xml /t:Compile /p:Major=%MAJ% /p:Minor=%MIN% /p:Build=%BLD% /p:Revision=%REV%
出於好奇,爲什麼你要這麼做?我有興趣瞭解一個真實世界的場景。 – 2013-07-02 05:48:29
@RaheelKhan:在Visual Studio之外自動構建腳本。這樣的腳本會設置特定的版本號,執行構建,生成安裝程序,並可選擇將完成的安裝程序(文件名中包含產品名稱和版本號)上載到Internet。如果您每12天更新一次同一產品(每個產品名稱不同),每隔幾天更新一次,每個解決方案都是一鍵式解決方案。也要考慮到運行這樣的腳本可以由不是程序員的人來完成。 – 2013-07-04 00:01:48
謝謝你的洞察力。 – 2013-07-04 03:57:41