我从两个不同的第三方 COM DLL 创建了两个 .NET Interop 程序集。这两个 COM DLL 都包含一个名为COMMONTYPE
。所以,COMMONTYPE
现在也通过两个互操作程序集公开。
我有第三个项目需要使用这两个互操作程序集,并且我收到了臭名昭著的编译时错误:
方式<ABC>
两者都存在<ASSEMBLY1.dll>
and <ASSEMBLY2.dll>
由于 COM DLL 是由第三方供应商提供的,因此我无法访问源代码,并且我正在编写一个 C# 控制台应用程序,这意味着我没有可以在其中添加以下内容的 web.config 文件:debug=false
解决方法。我能做些什么?
我知道这已经过时了,但是有比列出的更简单的方法。当您引用时这有效两个组件与共享类型exact相同的名称和命名空间。
如果右键单击 DLL 的引用并选择“属性”,您将看到一个名为“别名”的属性
默认值为"global"。对于冲突的程序集之一,请将其更改为任何其他值。在下面的示例中,我将其从“全局”更改为“目标”。
接下来,在您的代码文件中,您必须使用外部关键字使用此别名作为根级命名空间对于这些类型。在此示例中,您可以将以下内容放置在 .cs 文件的顶部:
extern alias destination
现在,在此文件中,您可以引用这两种类型。
extern alias destination;
namespace Test
{
public static class TestClass
{
public static void Success()
{
var foo = destination::Some.Duplicate.Namespace.SomeDuplicateType();
var bar = Some.Duplicate.Namespace.SomeDuplicateType();
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)