Dav*_*vid 2 vb6 dll .net-4.0 dllregistration
VB6程序员给了我一个要求(是的,它们仍然存在)。存在一个使用vb6 dll的vb6应用程序,该dll现在使用一个.net dll,而该.net dll又使用了另一个.net dll。现在,我的要求是.net dll应该以与vb dll相同的方式工作,即,一旦注册了vb6 dll,即可被其他应用程序使用,并且在推出时不需要包含在内(因此被告知)。有没有办法放置我的.net dll,以便其他vb6应用程序可以使用它。从我所看到的情况来看,仅当我的.net dll与我的vb6 exe位于同一文件夹中时,此方法才有效。
我已经阅读了这篇COM程序如何找到为COM Interop注册的.NET DLL?
谢谢
COM因其DLL Hell问题而臭名昭著。机器上所有程序的注册都是全局的。因此,替换DLL通常会导致破坏使用COM服务器的其他程序。
.NET对此有一个对策,当您运行Regasm.exe来注册[ComVisible] .NET程序集时,默认情况下它将假定您将该程序集放入GAC。它会自动购买DLL Hell保护。但是,使用/ codebase选项注册程序集并不少见,尤其是在您的开发机上,并且也由IDE完成。
但是,您现在会有一个新问题,CLR没有很好的机制来定位依赖的.NET程序集。探测路径基于EXE(COM客户端)。这就是为什么将依赖程序集复制到EXE安装目录的原因。
这对测试很好,但不是部署服务器时要使用的好的通用解决方案。您无法准确预测将要使用COM服务器的EXE及其位置。从政治上来说,弄乱别人拥有的程序的安装目录通常是困难的。
使用GAC,所有问题得以解决。
归档时间: |
|
查看次数: |
310 次 |
最近记录: |