类型<type>存在于两个DLL中。

29

我有一个在.Net 3.5框架中的DLL和另一个在2.0中。 ListBoxItem类存在于2.0中,我已经将该类链接到了同一命名空间中的3.5 DLL中。

当我尝试编译时,会出现“存在两个”错误。如何编译此代码并保持相同的结构?

我不想将2.0的DLL引用到3.5中以消除这个问题,我希望保持这些DLL分开。

4个回答

6

无论如何,这似乎都不是一个好主意,但可以更改命名空间并完全限定使用。

否则,为什么不只引用一个dll呢?


如果我更改命名空间,则这两个 DLL 不能在同一个方法中使用,因为它们具有2个不同的签名。 - pedrofernandes
我不想在3.5 dll中使用2.0 dll实例,因为2.0 dll添加了大量引用,当我编译时,它会编译我的3.5、2.0 dll以及所有2.0中的引用dll,这样我就可能会有15个dll,而我只需要在bin文件夹中有2个dll。 - pedrofernandes
你需要重新修改最近几篇文章中的英文。我完全不知道你在说什么。也许只需将它们全部合并为一个dll文件? - Bryan Rowe
抱歉我的英语不好 :). 我已经自己解决了这个问题。我引入了一个接口并在框架3.5中消除了该类,然后用接口替换了对该类的所有引用。 - pedrofernandes

5

2
你可以使用完全限定名称来引用扩展方法,但只有在直接调用它们而不是作为扩展方法调用时才能这样做。 - Ed Bishop

3

虽然这是一个旧的帖子,但我想补充一下另一个出现了此问题的实例。我正在处理一个从网站转换为Web应用程序的项目,使用Visual Studio 2010。我开始看到类型“class”存在于两个地方 ... / temporary ASP.NET /...yada...yada...yada。

在我的情况下,旧页面使用数据表格来显示日期列表,但数据集是一个类列表 List<MyClass>,而在.aspx中(不是代码后面),代码使用投射数据项进行显示...

<%# ((MyClass)Container.DataItem).MyDate %>

由于某种原因,MyClass触发了类型错误。在整个项目中进行了全面的搜索以查找任何可能的重复类引用等内容,但没有找到任何问题。因此,决定尝试摆脱强制转换,并采用从DataItem获取值的标准方法,如下所示:
<%# DataBinder.Eval(Container.DataItem, "MyDate").ToString()%>

然后……没有出现“type exists”错误了。不太确定为什么这会导致上述错误出现(如果有人有任何见解,将不胜感激),但问题已经消失了……

希望这能对某人有所帮助......

Dave


1
将它们分成两个不同的解决方案,一个针对.NET 2.0,另一个针对.NET 3.5。否则,.NET怎么知道如何加载哪一个?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接