项目中的引用 - ActiveX
嗨,我复制了一个项目,当我尝试在调试模式下运行这个新项目时,我有一条错误消息(见图片),它不会在AutoCAD中加载调色板。
如果我不在调试模式下,我可以网络加载dll和调色板打开。
在我的项目参考中,对于AXDBLib和ACSMCOMPONENTS19Lib,我注意到如果我尝试更改路径(对于新路径,因为它仍然引用旧项目),文件类型将从ActiveX更改为Assembly(见图片)。我不明白为什么...
也许这两个问题是联系在一起的...但是我不知道,我迷路了!
如果我不清楚,请告诉我!
**** Hidden Message ***** 首先,你没有说,我必须假设“ToolsPalette”是一个System.Windows.Forms.Control/UserControl。
然后,关于ActiveX引用。您需要将“嵌入互操作类型”更改为“False”,并确保“复制本地”设置正确:如果使用从 ObjectARX 下载的 AutoCAD 互操作程序集,则“复制本地”应设置为“False”,因为互操作程序集安装在 AutoCAD 安装文件夹中(但不安装在 GAC 中,如 AutoCAD2012 或更早版本)。但是,如果互操作程序集是由 Visual Studio 生成的(通过使用“引用”对话框的“COM”选项卡设置对 AutoCAD 类型库的引用),则“复制本地”应为“True”。 是的,就是这样,工具调色板是一个系统。Windows.Forms.UserControl
我不确定复制本地是否必须选择真或假,我两个都试过了,它对我的调试问题没有任何改变,也许它甚至不可靠。
是否将“嵌入互操作 TYpes”设置为“False”? 是的 好的。我猜您的调色板(UserControl)(或您的项目)引用了SheetManager COM组件。也就是说,当您转到“添加引用”对话框并在“COM”选项卡中选择Sheet Manager组件时,VIsual Studio会生成2个互操作程序集:
interop.AcSmComponents19lib.dll
Interop.AXDbLib.dll(这是对Sheet Manager组件的依赖项)
当您将项目文件移动到新项目时,您需要同时引用这2个互操作程序集,并且“Copy local”必须为“True”,“EmbedInterop Types”必须为“False”。
为了让事情变得简单,在新创建的项目中,您只需删除旧引用,然后转到“添加引用”对话框和“COM”标签以添加对Sheet Manager组件的引用。这样,Visual Studio将为您创建新的互操作程序集,这将保证正常工作(不要忘记正确设置“复制本地”和“嵌入互操作类型”)。
页:
[1]