将interop dll放入GAC?

Nel*_*son 5 .net vb.net gac com-interop

这可能是一个愚蠢的问题,但我需要澄清一些.我对.NET有点新,并创建了一个必须引用现有COM DLL的EXE.在这样做时,Visual Studio 2010自动创建了一个"Interop"DLL,它需要/使用它来处理旧的COM DLL.

我已经部署了我的项目并将它包含在这个Interop DLL中(在同一个文件夹中),一切正常.但是,我有其他应用程序需要使用相同的传统COM DLL.可以在每个应用程序中以相同的方式引用它并继续在每个应用程序中部署"Interop"DLL吗?不幸的是,所有这些小应用程序都在同一个文件夹中,并且每个都使用相同的Interop DLL(因此如果它被另一个应用程序使用,它就已存在.)我被迫将它们放在同一个文件夹中,因为这些应用程序正在被称为自定义父应用程序的一种方式.因此,当它想要运行"自定义"应用程序时,它只查看它的本地文件夹.我只是担心如果一个EXE被删除并且他们取出Interop DLL,那么仍​​然依赖它的其他人将会失败.

所以,我想知道将Interop DLL放入GAC是否可能或者是个好主意?我继续将Interop DLL安装到GAC中,然后从我运行EXE的文件夹中删除了Interop DLL,但它无法正常工作.我收到一条错误消息"无法加载文件或程序集".我坚持让这个工作.

  1. 我是否需要以不同方式引用我项目中的Interop DLL,以便它现在来自GAC?要么
  2. 我是否需要在我的.NET代码中添加一些东西,比如Assembly.Load才能使它工作?
  3. 我是否需要使用TLBIMP自己创建Interop DLL?

任何帮助将不胜感激!

最好的祝福,

纳尔逊

Ste*_* P. 0

您可以使用ILmerge制作单个 .dll 文件并将其部署到 GAC 中。

附言。如果您使用的是 VS.NET 2010,则可以使用Embed Interop types项目属性,请查看此处