2010-07-10 26 views
0

我正在創建一個.NET程序集,該程序集將爲COM註冊,以便它可以被Microsoft Excel VBA引用。使用REGASM&COM時不在GAC中的程序集的多個搜索路徑

程序集引用了一個不在GAC中的第三方.NET程序集(包含一些有用的類),但是,由於第三方程序集的路徑是部署程序集,因此我的程序部署出現問題並不總是在相同的位置(這取決於用戶的區域設置以及最近安裝的第三方組件)。

這意味着,當部署我的程序集(使用REGASM)時,根據它所安裝的系統,REGASM有時會翻倒,因爲它無法找到我的程序集對第三方程序集的依賴關係。

理想情況下,我想在我的程序集中使用早期綁定,但如果我這樣做,並且第三方程序集的路徑與Visual Studio中的引用不同,那麼REGASM將失敗。

我意識到「複製本地」(在VS中)可以解決這個問題,但由於第三方程序集有時會打補丁,所以我真的不希望在同一個文件夾中保存過時的版本我的大會。

有沒有辦法解決這個問題,我不必使用「複製本地」?我想我可以使用第三方程序集的某種動態加載,但是仍然可以使用早期綁定? (並且REGASM會工作嗎?)

回答

0

爲什麼不首次使用「複製本地」,並且在應用程序啓動時有一個例程,可以通過可能的位置列表來更新版本,並覆蓋(或調度不可訪問時的覆蓋等),如果可能的話,本地組件。

另外,您可能希望給用戶一個選項,以手動設置dll應該打開的位置,然後您總是(或按需)檢查更新的版本。

另一方面是,如果您的應用程序的功能取決於某個版本,您爲什麼要更新新的程序集,因爲如果他們更改了某個特性或者他們提供了某些程序將會因爲更新而失敗, 只是一個想法。

相關問題