2009-11-04 34 views

回答

2

我使用這個MSBuild Task來自動遞增我的內部版本號 - 需要在* .csproj或* .vbproj文件中進行一些手動修改,但它的工作原理非常完美,而且非常靈活。

+0

我認爲這是針對我需要的更好的東西,它需要我一些時間來測試它,但它看起來不錯!謝謝 ! – Dani 2009-11-04 15:39:29

+0

這是一個小問題,我使用一個svn受控環境,如果我不檢查它們,它會鎖定這些文件。 使用此解決方案使我鎖定assembly.cs爲了構建。 我想有沒有辦法避免這個...但它需要的解決方案的樂趣... – Dani 2009-11-05 11:01:06

1

Visual Studio中有一個內置的mecanism爲:

AssemblyInfo.cs,通過這一更改設置:

[assembly: AssemblyVersion("1.0.*")] 

星號標誌指示Visual Studio來對各建一個版本1.0分配。 ds,其中d是自2000年2月1日以來的天數,s是自午夜/ 2以來的秒數。

編輯:

看看這個網頁:http://www.codeproject.com/KB/dotnet/ManagingAssemblyVersions.aspx沒有對多信息:如何管理的版本號。

+0

10倍,我怎麼能分出哪個是當前數/有一個「SID」 - 這意味着 - 如果項目在數量上是55,我想它從56自動啓動? (或從magor版本號更改後從零開始) – Dani 2009-11-04 15:19:58

+0

我試過在該字段中使用*,但ide不允許。 – Dani 2009-11-04 15:21:11

+0

如果我沒有記錯,第一個生成的數字將在日期的函數中生成,第二個生成的數字將生成。 所以你會得到像1.0.4245.51002 – Matthieu 2009-11-04 15:25:27

0

IIRC在您的解決方案資源管理器中,單擊「顯示所有文件」,我相信它是靠近窗口頂部的第三個文件。

(雙擊)「我的項目」。

接下來,在「AssemblyInfo.vb的」

在代碼編輯器中雙擊,直到你已經達到底部向下滾動。

註釋掉

更換

<Assembly: AssemblyVersion("1.0.0.0")> 

<Assembly: AssemblyVersion("1.*.0")> 

點擊 '保存'。

然後你就完成了!

+2

是的,但是這並不能很好地推進內部編號 - 它只是抓住當前時間和日期並將它粘在那裏,所以你的內部編號看起來像1.0。 21643.23849等等...... – 2009-11-04 15:27:13

+0

謝謝你,生病說一聲。我記得我的一位同事曾經提過一次。 – CaRDiaK 2009-11-04 15:58:12

0

一個靈活的選擇是創建一個帶有版本編號方案的T4模板,並引用Visual Studio從其生成的.cs文件。這樣的模板的一個例子:

<#@ template language =「C#」#> // //此代碼是由工具生成的。手動進行的任何更改將丟失 //下次重新生成此代碼。 //

using System.Reflection;

[組件:的AssemblyVersion( 「1.0.1 <#= this.RevisionNumber#>。」)] [組件:的AssemblyFileVersion( 「1.0.1 <#= this.RevisionNumber#>」)] <# + int RevisionNumber =(int)(DateTime.UtcNow - new DateTime(2010,1,1))。TotalDays;

>

在這個例子中的版本號從1月1日,2010年被設置爲天數,但可以提供任何自定義編號方案,因爲它是純C#。

我寫了一個blog post這也解釋了更詳細此技術:

+0

謝謝,我會檢查你的博客,瞭解這種技術。 – Dani 2010-04-26 07:02:35