【发布时间】:2014-04-04 02:33:54
【问题描述】:
我正在开发一个 .Net 组件,它将作为插件存在于 Windows 应用程序中。这个插件将使用 regasm 在客户端机器上注册。我的组件嵌入了它的大部分依赖项,并在请求时将程序集返回给 AppDomain。如果我尝试在我的单个 dll 上运行 regasm,它会失败,因为它无法在文件夹中找到依赖项。在客户端机器上安装组件时,这将是一个问题。
有没有办法告诉 regasm 从哪里获取嵌入式 dll?
到目前为止我已经尝试过:
使用附近的 dll 注册组件,然后将单个 dll 复制到运行时文件夹。我的组件工作正常,并且在运行时发现了 dll,但这不是部署的选项。
使用 ComRegisterFunctionAttribute 挂钩。只有当 dll 在附近时才会调用它,所以它并不比 #1 好。
我无法控制 regasm 会被调用的事实。我没有有让我的组件成为一个单独的 dll,但如果我能解决这个问题,它会使部署变得相当容易。
【问题讨论】:
-
你试过
regasm /codebase吗?这会将您的程序集文件的路径放在 COM 注册条目中(在注册表中)。 -
不幸的是,我无法控制 regasm 的调用方式,但是 regasm 可以轻松找到我的程序集。它只是找不到嵌入其中的程序集——也不会询问它们在哪里。
-
谁在叫regasm? MSI 安装程序?
-
应用程序。它会检查是否有要添加的组件。在尝试加载它们之前,它会将它们拉下来并注册它们。
标签: .net com-interop regasm