我對COM沒有太多的工作,所以請原諒我的無知。C#應用程序的兩個版本之間的COM麻煩
背景:我正在處理VS 2010中的一個項目。有一個C#COM DLL集成到C#解決方案中,還有一個安裝/部署項目 - 安裝項目設置爲註冊COM .tlb文件安裝。
問題:當有人決定安裝最新版本的C#應用程序,因此最新的COM DLL時,以前版本的C#應用程序及其COM DLL一起出現在PC上。發生這種情況時,它破壞了C#應用程序的兩個版本的COM功能..或者我正在假設發生了這種情況。
這是典型的COM/DLL-地獄行爲?當兩個C#應用程序都被卸載,然後只有一個被重新安裝,一切都恢復正常 - 兩者顯然不能同時安裝。
我已經嘗試更改了COM DLL項目的GUID,更改了COM DLL項目的AssemblyVersion和AssemblyFileVersion--所有這些都帶有混合結果。當我更改這些項目時,應用程序的新安裝(很好),但現在舊的C#應用程序沒有工作功能。
注意:當COM功能失敗時,沒有錯誤或異常拋出 - COM調用似乎什麼都不做。所以它「默默」失敗。
我一直在研究這一點,並嘗試各種修改沒有真正的成功......也許我想這是錯誤的方式。有沒有其他人有更多的經驗可以給我一些見解?
我想這一點 - 也許我做錯了,但我像以前一樣得到同樣的症狀。合併模塊項目似乎是重新包裝東西以獲得相同結果的一種方式。無論我是否編輯我的程序集版本,程序的舊版本仍然具有明顯缺失的功能。 – stariath
stariath,試試這個:在你的C#應用程序中找到com對象的引用並點擊它。在屬性中向下滾動到Isolated屬性並選擇True。重建你的項目。 –