2010-09-09 85 views
2

我試圖部署包含多個應用程序(約20左右)的公共編排的BizTalk應用程序的新版本。新版本包含一個新的編排,將被幾個新的應用程序使用。重新部署由其他應用程序使用的BizTalk應用程序

當我嘗試導入微星的新版本,我得到一個錯誤說:

「無法更新組件‘[assembly_name]’,因爲它使用由不在組組件的程序集。更新 要更新組件,刪除以下組件:「[dependant_assembly1] [dependant_assembly2] ......」

在BizTalk服務器不是從開發環境訪問,以便應用程序必須使用更新BizT alk管理控制檯。如何導入更新的應用程序而無需刪除並重新安裝所有20個或更多的依賴應用程序?

感謝

+0

這不是總的答案,但是這篇文章幫助我確定何時需要重新部署或re'GAC。你可以把它看成你的總體戰略:http://www.masteringbiztalk.com/blogs/jon/PermaLink,guid,628aecb9-4eaa-4044-88c9-92cb53f81bdf.aspx – 2010-09-13 12:59:31

回答

4

這聽起來像你正在部署使用相同的版本號爲現有的舊版本,新的基礎應用。

什麼爲我們工作:

  • 每次部署應用程序的新版本,增加版本號(因爲組件是GAC'ed,BTS通過並行版本支持側)。任何已更改的定製組件也應該進行版本控制。
  • 將您的新應用程序部署到本地BizTalk後,編輯資源以確保引用的所有程序集和綁定等的正確(最新)版本都是最新版本(刪除舊版本,添加新版本)。
    • 您的常見應用程序現在將包含程序集的舊版本和新版本。較新版本的「客戶」應用程序將使用基本/框架/通用應用程序的較新版本。
    • 一旦所有從屬應用程序都升級完畢,您可以刪除舊版本。

但真正的解決方案似乎是要考慮去耦應用程序更多,例如通過在應用程序之間使用消息傳遞 - 通過這種方式,您可以將模式分割爲應用程序的通用引用。

1

如果您想省略版本,您實際上可以在BT上進一步對BT的部署過程進行黑客攻擊,具體取決於您對BT盒子的訪問權限。 (說服你的系統管理員)

如果您只有權訪問部署控制檯,請停止依賴應用程序,刪除其對要升級的應用程序的引用,然後在頂部進行部署,重新添加引用並重新啓動依賴應用程序你實際上不必重新安裝。這種方法很乏味,很糟糕,但它會起作用。我們這樣做是因爲我們的BT安裝太多以至於使用同一應用的多個版本進一步混淆它們。

這裏是黑客攻擊。你需要訪問服務器(我知道你說的你沒有),或者需要安裝一個可以接收dll的服務併爲你完成下面的功能。(我想你可能會說服別人讓你設置)免責聲明,這不是一個支持的解決方案,我聲明沒有責任等等等等等等等

我們一直這樣做,因爲我們有太多的應用程序做第一個解決方案。您可以將您最近編譯的DLL強制進入GAC。這不是由MSFT等推薦的,但是我們在服務器上使用它, GAC和1200 BT應用程序中有4000個dll。你需要確保你的元數據是完全相同的,也就是說你有相同的版本,密鑰令牌等,並且你需要有一些方法來在版本系統之外跟蹤你的dll(我們構建一個自定義的部署基礎設施來完成這個任務)。最後,一旦你將你的dll推入GAC,你需要重新啓動你的biztalk服務。確保您沒有任何引用您要重新部署的應用程序的掛起實例,因爲它們將防止biztalk在重新啓動時從GAC提取新的引用。

最後需要注意的是,如果您的更改需要更改MessageBox子目錄(比如接收形狀過濾器,相關性等的變化),則此方法將無法工作。您還將放棄協調調試器中的一些功能如果你用這種方法來改變orchs的結構。最後正確安裝時,圖形將顯示編排的結構,但事件列表對於最新版本將是正確的。最後,如果您正在替換架構dll,則希望雙倍確保您重新啓動服務,因爲BT將無限期地緩存架構。