相关疑难解决方法(0)

类型存在于2个程序集中

我从两个不同的第三方COM DLL创建了两个.NET Interop程序集.两个COM DLL都包含一个名为的类型COMMONTYPE.因此,COMMONTYPE现在也通过两个Interop组件暴露.

我有第三个需要使用这两个Interop程序集的项目,我得到了臭名昭着的编译时错误:

该类型<ABC>存在于<ASSEMBLY1.dll><ASSEMBLY2.dll>

由于COM DLL是由第三方供应商提供的,因此我无法访问源代码,而且我正在编写一个C#Console应用程序,这意味着我没有web.config文件,我可以在其中添加debug=false解决方法.我能做什么?

c# com-interop

65
推荐指数
5
解决办法
5万
查看次数

如何正确加载程序集

我开发了一个带插件的系统,它在运行时加载程序集.我有一个通用的接口库,我在服务器和它的插件之间共享.但是,当我执行LoadFrom for plugin文件夹并尝试查找实现公共接口的所有类型时,IServerModule我得到运行时异常:

"ServerCore.IServerModule"类型存在于"ServerCore.dll"和"ServerCore.dll"中

我加载这样的插件:

foreach (var dll in dlls)
{
            var assembly = Assembly.LoadFrom(dll);
            var modules = assembly.GetExportedTypes().Where(
                type => (typeof (IServerModule)).IsAssignableFrom(type)
                && !type.IsAbstract &&
                !type.IsGenericTypeDefinition)
                .Select(type => (IServerModule)Activator.CreateInstance(type));
            result.AddRange(modules);
}
Run Code Online (Sandbox Code Playgroud)

我该如何处理这个麻烦?

我会感激任何帮助

.net c# reflection .net-assembly

6
推荐指数
1
解决办法
388
查看次数

标签 统计

c# ×2

.net ×1

.net-assembly ×1

com-interop ×1

reflection ×1