我們有一個COM註冊的舊C/C++ .dll。我們的客戶擁有使用該.dll的本地和.NET客戶端。在客戶端使用與.NET版本相同的.NET版本替換COM註冊的.dll時,.NET客戶端崩潰
我們已經構建了一個新的.NET .dll來替換舊的,即它們的COM接口是相同的。我們希望替換舊的.dll而無需我們的客戶重新編譯或向客戶做任何事情。
對於本地客戶端,它可以正常工作,只需註銷舊的.dll並註冊新的(帶有regasm)即可。它也適用於某些.NET客戶端。但是,在這些情況下,客戶端和新的.dll都使用相同的.NET版本進行編譯,它會引發下面的異常。
換句話說,這個作品:
.dll is .NET 3.5 -> client is .NET 4.0
.dll is .NET 4.0 -> client is .NET 3.5
.dll is any .NET -> Client is native
這引發以下exeption:
.dll is .NET 4.0 -> client is .NET 4.0
.dll is .NET 3.5 -> client is .NET 3.5
[A] BARAPIXLib.barcom5不能轉換爲[B] BARAPIXLib.barcom5。
類型A來源於位於C:\ arkiv \ S_BTW \ BTW \ BARAPIXWebService \ Barapix \ bin \ BARAPIXLib的上下文「LoadFrom」中的'BARAPIXLib,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'。 DLL」。
類型B來源於位於'C:\ arkiv \ Bartrack \ BartrackTest \ x86 \ Src \ BartrackTest \ bin'上下文'Default'中的'BartrackTest,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null' \ 86 \發佈\ BartrackTest.exe」。「}
任何想法,將不勝感激。
任何機會我們可以看到DLL方法引用的聲明以及一些調用代碼? – pickypg
你的意思是客戶怎麼稱呼我們的.dll?這是我們所不知道的,但他們可能會在Visual Studio中完成「添加引用」。我們希望用新的.NET代替舊的C/C++ COM .dll,而不需要重新編譯客戶端或任何東西。如果這是可能的。 – Poppert