这可能是一个有点愚蠢的问题,但我需要一些澄清。我对.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,但它无法工作。我得到一个错误消息:“无法加载文件或程序集”。我被卡在让这个工作上。
以下是我的问题:
最好的问候,
纳尔逊
我已经部署了我的项目,并将这个Interop DLL包含在其中(在同一个文件夹中),一切都正常工作。然而,我有其他应用程序需要使用相同的遗留COM DLL。是否可以在每个应用程序中以相同的方式引用它,并继续使用每个应用程序的“Interop”DLL进行部署?不幸的是,所有这些小应用程序都放在同一个文件夹中,并且每个应用程序都使用相同的Interop DLL(因此如果另一个应用程序使用它,则它已经存在)。我被迫将它们放在同一个文件夹中,因为这些应用程序被调用作为定制父应用程序的一种方式。因此,当它想要运行“自定义”应用程序时,它只会查找本地文件夹。我只是担心如果其中一个EXE被删除并且他们取出Interop DLL,那么仍然依赖它的其他应用程序将失败。
所以,我想知道是否可以将Interop DLL放入GAC中,这样做是否可行或者是否是一个好主意?我已经安装了Interop DLL到GAC中,然后从我的EXE运行的文件夹中删除了Interop DLL,但它无法工作。我得到一个错误消息:“无法加载文件或程序集”。我被卡在让这个工作上。
以下是我的问题:
- 我是否需要以不同的方式引用我的项目中的Interop DLL,使其现在来自GAC? 还是
- 是否需要向我的.NET代码添加类似于Assembly.Load的内容才能使其工作?
- 是否需要使用TLBIMP自己创建Interop DLL?
最好的问候,
纳尔逊