类型存在于两个程序集中

问题描述 投票:65回答:5

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

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

<ABC><ASSEMBLY1.dll>中都存在<ASSEMBLY2.dll>类型>

由于COM DLL由第三方供应商提供,所以我无权访问源代码,并且我正在编写C#控制台应用程序,这意味着我没有web.config文件,可以在其中添加[C0 ]解决方法。我该怎么办?

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

c# com-interop
5个回答
139
投票

我知道这很旧,但是有比列出的方法更简单的方法。当您引用与相同名称和名称空间的[[exact


12
投票
除非供应商的名称空间相同(不太可能),否则类型定义实际上将是分开的。您需要做的(有时是完整的PITA)是在using语句中创建名称空间别名,而不是简单地应用carte blanche语句。这将使您可以重新标识名称空间:

11
投票
旧问题,但找到了一个更简单的选择...选择您要使用的参考...在属性下,将别名更改为“ xyz”现在在代码行的顶部添加:

1
投票
您可以对不同的名称空间和/或类型使用别名:

0
投票
也许您可以通过更改其中一个程序集的MSDN来欺骗它,在这种情况下,一个namespace的完全限定名称将不等于另一个,并且

可能

© www.soinside.com 2019 - 2024. All rights reserved.