我们的 Visual Basic 6 应用程序引用了 SMARTCef.dll(com-visible .NET 程序集)
在我们的 beta 测试人员的机器上,我们将此应用程序存储在 \Beta 和 \Prod 文件夹中,并且运行应用程序的快捷方式将 SMARTCef.dll 注册为 ``` regasm /codebase /tlb SMARTCef.dll `
Beta 版本为 1.1.3.0,未签名并按预期运行。Prod 版本为 1.0.0.1,未签名且不再成功运行,因为从已签名的 v 1.1.1.0 更新 \Beta。
我不得不删除强名称,因为 SMARTCef.dll 现在引用了一个没有也不会被签名的内部 nuget。
fuslogvw.exe 显示以下引用旧版本 SMARTCef.dll 的绑定错误。
...这是错误的近似值,因为它位于防火墙后面,我无法复制/粘贴
...
LOG: Post-policy reference: SMARTCef, Version=1.1.1.0 Culture=neutral, PublicKeyToken=xxxx
...
LOG: Assembly name is: SMARTCef, Version=1.0.0.1, Culture=neutral, PubliKeyToken=null
WRN: Comparing the assembly name resulted in the mismatch: Minor version
ERR: The assembly reference did not match the assembly definition found
...
问题
- 这表示 VB6 应用程序需要签名的 1.1.1.0,但只能找到 1.0.0.1。自从该应用程序的 prod 版本在 1.1.1.0 甚至存在之前于 7 月部署以来,这怎么可能?
- 为什么它不期望也安装并为 \Beta 构建工作的未签名 1.1.3.0?
- 如何/我可以强制 VB6 始终查看它自己的文件夹以加载 SMARTCef.dll 文件?