2011-12-09 14 views
10

命令行參數我想能夠指定版本號爲構建作爲MSBuild的命令參數這樣過程中產生的所有組件:指定組件的版本號爲的MSBuild

MSBuild.exe /p:version=5.4.3.0 

我已經看過AssemblyInfoTask,但在我看來,這不是一個好的解決方案。

+0

爲什麼AssemblyInfo任務不適合你?目的*是*設置程序集信息,包括版本號(AssemblyVersion)屬性。 – DaveE

+0

需要根據一些外部規則設置版本號,而不是使用AssemblyInfoTask可以內置的一些規則。基本上我想讓命令行參數成爲版本號。 – user379429

回答

10

我使用AssemblyInfo任務,正如您在評論中一直描述的一樣。

​​

的VERSIONNUMBER值從MSBuild項目文件之外通過完全按照你描述:

MSBuild <project_file> /p:VersionNumber=<value>;... 

我們使用BeforeBuild目標,以確保AssemblyInfo.cs中文件中的所有構建開始之前得到的工作。這不是你想要的嗎?

+1

當我嘗試這個時,我得到一個錯誤,說AssemblyInfo任務未找到。我搜索了「AssemblyInfo任務」,並通過該名稱安裝了一些作爲MSBuild擴展的東西,但是這並不起作用。你能提供一個你正在使用的鏈接嗎? – CoderDennis

+0

@DennisPalmer,我們使用[MSBuild擴展包](http://msbuildextensionpack.codeplex.com/)中的任務。將...任務文件包含在PropertyGroup元素中,你應該很好。 – DaveE

+0

安裝該擴展包沒有幫助,我仍然有錯誤,所以我打開這裏的問題在這裏http://stackoverflow.com/questions/13090933/assemblyinfo-not-found-and-msbuild-extension-pack-installed –

7

我知道這是一個古老的問題,但谷歌帶我到這裏作爲最好的結果。

我遵循this的簡單解決方案。無需擴展包。

基本上你需要做的是增加一個「BuildCommon.targets」文件,並相應修改您的csproj文件,以在MSBuild的等指定的版本號:

msbuild.exe abc.sln /p:Configuration=Release;VersionAssembly=1.2.3.4 

希望這有助於。

+0

它應該是AssemblyVersion嗎? –

+0

@Freidgeim:這取決於如何在BuildCommon.targets文件中命名該命令開關。這完全取決於你:) – Jach