2009-05-25 117 views
0

我有几个类库包含ArcGIS的一些命令和自动更新程序。到目前为止,每个库都包含一个安装程序类,并且我们有一个负责安装所有dll的安装项目。就像in here一样。
我现在已经创建了另一个包含工具栏的库,它应该包含我们拥有的所有命令。该项目参考了其他项目,并且AddItem(来自BaseToolbar基类)使用AddItem(Type type)重载,强制类型化,而不仅仅基于字符串(对于CLSID或名称)。
当然,工具栏项目包含insallter。我只想知道是否改变建议的安装程序实现(从上面的链接)是一个好主意,这样它将确保所有命令的dll都将被注册(在输出文件夹中迭代dll文件并注册他们有没有更好的办法?)
这会将安装问题从每个命令项目移到一个集中的地方。我认为用这种方式添加更多命令会更容易,因为我只需要从工具栏项目中添加对它们的引用。这是否有道理,还是应该坚持把安装程序分别安装到每个项目中,并将它们逐个添加到安装项目中?arcgis com注册

另一件事 - 是否有一种简单的方法可以找到ArcMAP中的几个命令来自哪里?我有一些奇怪的类别(由本机上的过去用户创建),以及我想删除的旧命令。

回答

0

我认为这是有道理的。当安装程序(如Wise,installshield等)在您的安装程序组件上调用RegisterAssembly和UnregisterAssembly时,您必须确保一切都在正确的位置。例如,如果在调用UnregisterAssembly之前,卸载程序会删除您的“命令”程序集,这可能会造成问题。我认为你只需要测试一下就可以发现。只要你知道所有的“命令”程序集都可以使用,看起来它可以正常工作。

您也可以通过将通用安装代码包含在单独的常用程序集中并始终实现安装程序类来解决此问题。

0

更好,更方便的工作流程将是在一个库/程序集本身中拥有所有命令。 这样你只有一个DLL注册。

至于找到其他自定义工具来自的dll:有一个技巧。 调试运行ArcMap的任何自定义ArcGIS扩展或样例。在Visual Studio中留意输出窗口。这会给你一个由ArcMap加载的所有dll的列表。

+0

是的,我知道我们应该为我们所有的命令制作一个Commands dll。应该有关键词:-) 感谢vs技巧。我会看看那个清单。 – 2009-06-04 05:21:17