2008-11-06 46 views
2

在我所有其他的.net應用程序中,我的構建過程(混合了nant和自定義任務)在調用msbuild之前使用當前構建號自動更新[AssemblyVersionAttribute] AssemblyInfo.cs,在版本號中打印版本號。我的構建過程中的自動BizTalk版本控制

我現在正在開發我的第一個BizTalk項目,我想用BizTalk程序集的版本號做同樣的事情,但我遇到了麻煩!

首先,所有的彙編版本號都存儲在btproj文件中,所以我做了一些Google搜索,發現www.codeplex.com/biztalk看起來像是我的問題的答案,但是存在更深層次的問題!

我有一個項目用於我的模式,另一個用於我的管道,管道項目引用我的模式項目,因爲我有一個平面文件dis/assemblers。問題出現在我更新版本號時,即使在Visual Studio中更新它們也不會更新管道組件對模式的引用。

因此,如果我將VS IDE中的所有版本號從1.0.0.0手動更新到1.1.0.0,則構建失敗,因爲管道組件平面文件分發/彙編器仍然引用模式的舊版本1.0.0.0版本!他們不會自動更新!

這是一個真正的手動過程:更新屬性頁中BizTalk項目的版本號,然後構建項目並手動更新引用它們的所有管道組件的屬性中的引用?

這意味着我不能讓我的構建過程控制版本號的部分版本號!

或者是否有更好的方法來管理BizTalk程序集的版本號?

回答

2

我很抱歉讓你失望,但我已經走下了一條不得不放棄的道路。我想它可能會實現它,但它會需要對綁定文件和其他XML文件進行很多更改(正如您所提及的,如果您已發佈服務等,則更多)。

也許這可能是可能的包裹在構建步驟(a MSBuild的步驟或其他構建框架相似的)所有這些必要的改變 - 這將是有用!

0

燒傷,認爲可能是這種情況。也許BizTalk 2009項目在更新版本號時更新引用時會更好地播放。

我開始手動進行自動化,當我意識到需要做什麼時,當我意識到需要修改多少個位置才能使其工作時,我採取了一個步驟。感謝上帝撤銷簽出。

我有一個標準的C#類庫包含在我的項目(各種幫助函數),我可以更新我的編譯過程中的版本號,所以我基本上使用該程序集來版本整個應用。如果有人想知道任何環境下的版本,請查看該程序集的版本號。

不理想,但它的工作。

+0

我聽說過與MSBuild的適當集成是BT 2009 – 2008-11-06 21:23:17

0

我們已經在我們的項目上成功完成了這項工作 - 我會看看是否可以讓該工具的開發者發佈詳細信息...

2

開發技術:)

我們有類似的問題,我們結束了開發一個小工具,這將改變在所有的項目即* .csproj的(asssemblyinfo.cs)的版本號,* .btproj相應。除此之外,它將使用新版本的模式打開並修改* .btp文件。簡而言之,您所要做的就是在VS.net工具菜單中配置此實用程序並執行它。

我想在任何.net lanagauge中開發這樣的工具並不是很困難。

注意:不要忘記在更新後使用與原來相同的編碼保存文件。

乾杯!

0

當您將最新版本的依賴組件作爲文件引用(此處稱爲架構)執行集成構建時,會出現此問題。

請記住,升級assemblyversion必須始終手動執行,這樣您總是負責更改assemblyversions。

解決構建破壞問題的一種可能的解決方案是將文件引用到相關組件構建版本的特定版本,而不是最新版本,並使用子驅動器和副本腳本來獲取最新組件版本。

例如:

SchemaA,組件版本1.0.0.0 PipelineA(與pipelinecomponent XMLValidator例如),組件版本1.0.0.0

PipelineA有一個文件參照SUBST驅動器(說R驅動器,它映射到工作區D:\ MyComponents)和SchemaA的1.0.0.0版如下:

R:\ SchemaA \ 1.0.0.0 \ SchemaA.dll。

副本腳本將SchemaA的構建輸出本地複製到R驅動器。

當模式A更新到版本1.1.0.0時,您沒有任何問題,因爲您仍然使用版本1.0.0.0,並且您可以選擇使用模式的1.1.0.0版本。當您想要升級時,您必須更改您的副本腳本並將文件引用替換爲R:\ SchemaA \ 1.1.0.0 \ SchemaA.dll。