我们有一个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