共用方式為


更新應用程式和構件的已知問題

更新應用程式

移除或刪除工件不會從所有位置將其移除

移除或刪除成品會從 BizTalk Server 資料庫刪除它,使其不再出現在管理控制台或 BTSTask ListApp 命令所產生的應用程式成品清單中。 它不會從 Windows 註冊表、全域組件快取(GAC)、虛擬目錄或文件系統中移除工件,如果它存在於這些位置中的任何一個。 如果傳送埠、傳送埠群組、接收埠和接收位置只存在於 BizTalk 管理資料庫中,此操作將會完全刪除這些元件。

更新工件

移除或變更元件的狀態可能會使應用程式無法正常運作

當您將參考從某個應用程式新增至另一個應用程式,並且對另一個應用程式相依的成品狀態進行任何變更,或移除成品時,具有相依性的應用程式將無法正常運作。 如需變更成品狀態的詳細資訊,請參閱 管理成品https://go.microsoft.com/fwlink/?LinkID=154725) 中適當成品的一節。

不支持 .NET 政策檔案

BizTalk Server 不支援使用 .NET 原則檔案。 這是因為原則檔案可能無法如預期般運作。 原則檔案會將 .NET 重新導向至 GAC 中的指定元件版本,但 BizTalk Server 通常會從快取或 BizTalk 管理數據庫存取元件和成品數據。 根據成品類型、快取情況,以及主機實例是否已重新啟動,原則檔案可能無法執行所需的動作。

更新組件

如果主機未停止,對元件的變更可能不會生效

BizTalk 元件必須遵循 .NET 版本控制規則。 其中的主要含意是,一旦針對另一個 .NET 專案或元件的特定版本建置 BizTalk 專案(包括 BizTalk 專案),就會繼續使用該版本,直到針對較新版本重建為止。

在開發期間,與 .NET 版本控制相關的常見問題會發生,這是當 BizTalk 專案上的版本號碼未更改而重新部署元件時,未先停止並重新啟動載入類型至的 BizTalk 主機實例所造成的。

再次執行進程時,變更不會生效。 這是因為 .NET 元件載入記憶體的方式。 因為主機已經有程序集的記憶體內部複本,因此當新的複本放入全域程序集快取時,它不會重載程序集。 例如,如果已部署並執行協調流程的元件 1.0.0.0 版,且對協調流程進行變更,但版本號碼未變更,則變更不會生效。 停止主機實例之後,會釋放元件的記憶體內部複本,當主機實例再次啟動時,它會重載元件的新複本並取得變更。 如果已部署新版本,例如 2.0.0.0.0 版,而且已載入,則變更將會生效。

變更元件版本可能會中斷元件與依版本參考的項目之間的關係

在 .NET Framework 開發中,組建發生時,通常會將元件版本號碼更新為目前的組建編號。 不過,在開發 BizTalk 解決方案時,變更元件版本號碼可能會中斷元件與那些依賴其元件版本號碼來參考 DLL 的相依項目之間的關聯性。 下表列出以版本號碼參考 BizTalk Server 程序集的項目,以及變更程序集版本號碼的影響。

實體 變更元件版本號碼的效果
綁定檔案 變更元件版本號碼會導致參考元件的任何現有系結檔案失敗。 這是因為綁定檔案會透過屬性的元件,其中包括版本號碼,來參考組件。

您可以使用記事本或其他編輯器來更新系結檔案中的版本資訊。 您也可以重新部署方案,然後使用 BizTalk Server 管理控制台重新產生系結檔案。 最後,您可以使用文稿將部署和版本設定自動化。 如需部署的詳細資訊,請參閱 部署和管理 BizTalk 應用程式https://go.microsoft.com/fwlink/?LinkID=154210)。
BAM追蹤設定檔定義檔 (.btt) 變更元件版本號碼會導致任何現有的 BAM 追蹤配置檔定義檔案無效。 BAM 追蹤檔案的格式為二進位檔案格式,因此無法編輯,而且必須重新產生。 如果需要 BAM 追蹤設定檔,可能需要執行下列其中一項:

- 避免在建置程式期間經常更新版本號碼
- 延遲建置 BAM 追蹤設定檔,直到版本號碼穩定
使用 Web 服務發佈精靈發佈的 Web 服務 當 Web 服務發布精靈用來產生 ASP.NET Web 介面時,BizTalk Server 元件的元件版本會包含在 ASP.NET 原始程式碼中。 元件版本號碼會在執行時期由 ASP.NET 介面作為 Web 服務作業的 bodyTypeAssemblyQualifiedName 屬性的一部分使用。 如果 BizTalk Server 元件的版本號碼變更而不更新 bodyTypeAssemblyQualifiedName 屬性,則 BizTalk Server 將會拒絕後續的 Web 服務作業。

如果接收位置使用 XmlDefaultPipeline,則訂閱會依賴文件類型。 它會使用內嵌元件資訊,如果元件不存在,將會失敗。 如果您使用 PassThruPipeline(如果您公開埠並讓精靈建立接收位置,這是預設值),訂閱會忽略此嵌入的組件資訊。