我的 .NET 程序集的 COM 接口用于定义具有如下签名的方法:
GePoint Point(double X, double Y, double Z);
我把它改成这样:
GePoint Point();
使用该库的 AutoCAD VBA(64 位(代码抱怨参数不是可选的,因此我认为它仍然看到第一个签名。 我进一步猜测这个签名存在于注册表中的某个地方,但我很容易弄错。 由于对只能在AutoCAD中加载的AutoCAD dll的依赖关系,我无法使用Windows regasm工具进行注册/注销,因此我使用注册服务从AutoCAD内部执行此操作:
RegistrationServices rs;
rs = new RegistrationServices();
// To register
rs.RegisterAssembly(Assembly.GetExecutingAssembly(),
AssemblyRegistrationFlags.SetCodeBase);
// To unregister
rs.UnregisterAssembly(Assembly.GetExecutingAssembly());
也许有一种方法可以轻松清除对程序集的所有引用,以及其中定义的类型和方法?
方法签名不存储在注册表中。注册表通常具有 COM 组件的位置。
您是否能够使用 regsvr32 注册您的 COM 组件?
Regsvr32 是一个命令行实用工具,用于注册和注销 OLE 控件,例如 Windows 注册表中的 DLL 和 ActiveX 控件
使用管理员权限打开命令提示符并运行Regsvr32 path/to/your/com dll
然后,您可以检查程序是否正在选取新方法签名。