预订演示

请注意 : 本帮助页面不适用于最新版本的Enterprise Architect. 最新的帮助文档在这里.

前页 后页

技巧和窍门

注意事项

物品

细节

也见

GUID

用于注册插件

的注册GUID和名称插件

Enterprise Architect 32 位和 64 位版本应该是一样的。只有 DLL 的名称和/或位置应该不同。

Enterprise Architect 64 位和 C++插件

除了使用正确的注册密钥(参见Deploy Ad-Ins帮助主题中的步骤 4)之外,没有任何特殊配置可以让 64 位 COM object在Enterprise Architect 64 位下运行。

部署插件

.NET插件

生成.NET程序集时,必须将“目标平台”显式设置为 x86/x64。当Enterprise Architect 32运行在 64 位版本的 Windows 上运行时,将其留在“任何 CPU”上可能会导致问题。

将 x64目标添加到您的项目并重新构建项目。

当 Interop.EA 包含在项目中时,Visual Studio 在尝试注册.NET程序集时出现问题。它将尝试使用 regasm 来构建架构Interop.EA。如果您取消选中项目设置中的“Register for COM interop”选项(假设您有权写入注册表),我们会发现添加到 Post-Build脚本帮助。

如果 $(PlatformName) == x64 ("%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" "$(TargetPath)")

如果 $(PlatformName) == x86 ("%Windir%\Microsoft.NET\Framework64\v4.0.30319\regasm" "$(TargetPath)")

注记:在撰写本文时, .NET插件在Wine下和使用 Wine-Mono 时无法工作。

Java API

Java API 加载最后安装的Enterprise Architect ,并且在使用 32 或 64 版本的 dll 时不受影响,只要Java运行时可以找到 SSJavaCOM DLL。

Visual Basic 5/6 用户注记

Visual Basic 用户应注记, Enterprise Architect接口的版本号以类似于以下的形式存储在 VBP 项目文件中:

参考=*\G{64FB2BF4-9EFA-11D2-8307-C45586000000}#2.2#0#..\..\..\..\Program Files\ Sparx Systems \EA\建筑师#Enterprise物件模型2.02

如果从一个版本的Enterprise Architect迁移到另一个版本时遇到问题,请在文本编辑器中打开 VBP 文件并删除此行。然后在 Visual Basic 中打开项目并使用 Project-References 创建一个对Enterprise Architect物件模型的新参考。

持有状态信息

插件

是可能的插件

保存状态信息,这意味着数据可以存储在成员变量中以响应一个事件并在另一个事件中检索。这样做有一些危险:

  • Enterprise Architect自动化对象不会更新自己以响应用户活动、其他工作站上的活动,甚至是同一自动化客户端中其他对象的操作;在调用之间保留此类对象的句柄可能会导致第二个事件查询与Enterprise Architect的当前状态没有关系的对象
  • 当您关闭Enterprise Architect时,所有插件都被要求关闭;如果有任何外部自动化客户端, Enterprise Architect必须保持活动状态,在这种情况下,所有插件都会重新加载,丢失所有数据
  • 如果插件
    ,充当自动化客户端的Enterprise Architect不会关闭插件
    仍然持有对它的引用(释放 Disconnect() 事件中的所有引用可以避免这个问题)
建议除非有特定原因,否则插件

应使用存储库参数及其方法和属性来提供必要的数据。

Enterprise Architect未关闭

.NET特定问题

自动化检查对象的使用,并且在它们不再被使用之前不允许它们被销毁。

自动化接口主题中所述,如果您的自动化控制器是使用.NET框架编写的,即使您释放了对它的所有引用, Enterprise Architect也不会关闭。要强制释放 COM 指针,请调用内存管理函数,如下所示:

GC.Collect();

GC.WaitForPendingFinalizers();

此外,由于自动化客户端连接到Enterprise Architect ,这会创建插件,然后再连接回Enterprise Architect ,因此可能会陷入僵局, Enterprise Architect和插件不会彼此松手并保持彼此活跃。一个插件

可能会保留与Enterprise Architect的挂钩,因为:

  • 它保留对Enterprise Architect object的私有引用(请参阅前面的Holding状态),或者
  • 由.NET创建,GC机制尚未发布
避免死锁情况需要两个操作:
  • 自动化控制器必须在某个时候调用存储库.CloseAddins()(可能在处理结束时)
  • 插件必须在 Disconnect() 事件中释放对Enterprise Architect的所有引用;查看插件
    事件
    主题了解详情
您的自动化客户端可能会控制正在运行的Enterprise Architect实例,其中插件未遵守规则。在这种情况下,您可以调用存储库.Exit() 来终止Enterprise Architect 。

杂项

在使用.NET框架开发插件时,您必须在项目的属性中选择 COM互 操作 性,以便将其识别为插件

.

某些开发环境不会在创建时自动注册 COM DLL。在Enterprise Architect识别插件

之前,您可能必须手动执行此操作插件

.

您可以使用您的私人插件

键(根据插件

的要求插件

部署)来存储与您的插件

相关的配置信息插件

.

示例和提示 技巧和窍门 插件 事件