我们有一个旧的C/C++ .dll是COM注册的.我们的客户拥有使用此.dll的本机和.NET客户端.
我们已经构建了一个新的.NET .dll来替换旧的.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
Run Code Online (Sandbox Code Playgroud)
这会抛出以下内容:
.dll is .NET 4.0 -> client is .NET 4.0
.dll is .NET 3.5 -> client is .NET 3.5
Run Code Online (Sandbox Code Playgroud)
[A] BARAPIXLib.barcom5无法强制转换为[B] BARAPIXLib.barcom5.
类型A源自'BARAPIXLib,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null',位于上下文'LoadFrom'位置C:\ arkiv\S_BTW\BTW\BARAPIXWebService\Barapix\bin\BARAPIXLib.dll'.
类型B源自'BartrackTest,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null'在上下文'Default'位置'C:\ arkiv\Bartrack\BartrackTest\x86\Src\BartrackTest\bin\x86\Release\BartrackTest.exe"."}
任何想法,将不胜感激.
尝试取消注册任何以前的版本,并检查 dll 是否与可执行文件位于同一文件夹中。还可以尝试查看您从何处加载 dll。我认为您正在手动加载它,因此请查看您引用了错误的 dll 的地址。
| 归档时间: |
|
| 查看次数: |
315 次 |
| 最近记录: |