dll – RegAsm – / codebase选项何时适用?

我有一个COM可见的DLL,用C#编写,我想在VB6应用程序中使用.我有两个DLL的主要用例,我想知道/ codebase选项是否适用,何时更好地在GAC中注册.

用例:

>该DLL将被加载到另一个开发人员的电脑上,需要在VB6 IDE的“项目>参考菜单
>当VB6应用程序被释放时,DLL将被加载到生产机器上

有关适当使用/ codebase的任何信息将会有所帮助.

谢谢.

/ codebase选项与使用Regsvr32.exe注册COM服务器的方式完全相同.您必须选择DLL的特定位置,并将该位置的路径写入注册表.这是有风险的,COM服务器具有强大的DLL Hell问题,因为他们的注册是机器范围的.当您更新该DLL时,任何使用该服务器的应用程序将受到影响.通常情况不是很好,这通常会打破未被重新编译以使用更新的服务器的应用程序.

.NET通过能够存储由[AssemblyVersion]选择的DLL的多个版本而改进.与Windows并行缓存完全相同的是管理程序集的GAC.所以没有重建的旧应用程序将继续运行不受影响,仍然可以使用旧的DLL.这是一个很好的方法.

当您正在开发服务器时,建议使用/ codebase.您可以跳过在GAC中注册该DLL的额外必需步骤.忘记这样做是痛苦的,您的更改似乎不会起作用,因为测试应用程序将加载旧版本.当使用/ codebase时,Regasm会显示警告,警告您有关DLL Hell的潜力,可以忽略它.

当您让Visual Studio负责注册项目属性,构建选项卡“注册COM互操作”选项,那么您将获得完全相当于Regasm / codebase / tlb.

使用隔离COM(也称“注册表免费COM”)是最好的方法.它允许您将COM服务器的副本存储在与客户端程序相同的目录中,并且您完全不必注册它.然而,这需要修改客户端程序,如果您无法控制客户端应用程序,或者是其他人喜欢混淆的应用程序,则很难.例如Microsoft Office应用程序.

相关文章

Windows2012R2备用域控搭建 前置操作 域控主域控的主dns:自...
主域控角色迁移和夺取(转载) 转载自:http://yupeizhi.blo...
Windows2012R2 NTP时间同步 Windows2012R2里没有了internet时...
Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...