【问题标题】:The type <type> exists in both DLLs类型 <type> 存在于两个 DLL 中
【发布时间】:2015-10-05 23:58:57
【问题描述】:

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

当我尝试编译时,我得到一个“exists in both”错误。我怎样才能编译它并保持相同的结构。

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

【问题讨论】:

    标签: c# .net


    【解决方案1】:

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

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

    【讨论】:

    • 如果我更改命名空间,这 2 个 dll 不能在同一方法中使用,因为有 2 个不同的签名。
    • 我不希望 3.5 dll 中的实例 2.0 dll,因为 2.0 dll 添加了大引用,并且当我编译它时,编译我的 3.5、2.0 dll 更多 2.0 中所有引用的 dll,因为我可以拥有 15当我在我的 bin 文件夹中只能有 2 个 dll 时使用 dll。
    • 你需要修改最后几篇文章中的英文。我不知道你在说什么。也许只需要一个dll?
    • 对不起我的英语:)。我自己解决了这个问题。我在framework 3.5中引入了一个接口并去掉了这个类,然后用接口替换了所有对这个类的引用。
    【解决方案2】:

    这也是一个相关的解决方案,您可以在其中定义要在 usings 中使用的类型:

    https://stackoverflow.com/a/9194582/178620

    在处理扩展方法等时不能使用完全限定名称。

    【讨论】:

    • 您可以使用完全限定名称来引用扩展方法,但前提是您直接调用它们,而不是 as 和扩展。
    【解决方案3】:

    旧线程,但想在另一个发生此问题的实例中添加。正在处理一个在 Visual Studio 2010 中从网站转换为 Web 应用程序的项目。我开始得到类型“类”存在于 .../temporary ASP.NET/...yada...yada...雅达。

    在我的例子中,旧页面使用数据网格来显示日期列表,但数据集是类列表 List&lt;MyClass&gt; 并且 .aspx 中的代码(不是后面的代码)使用转换数据的方法显示项目...

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

    由于某种原因,MyClass 触发了类型错误。在整个项目中对任何可能的双重类引用等进行了全面搜索之后,没有找到任何东西,所以基本上决定看看我是否摆脱了演员表,只是使用从 DataItem 获取值的标准方法,如下所示:

    <%# DataBinder.Eval(Container.DataItem, "MyDate").ToString()%>
    

    瞧……没有更多类型存在错误。不太清楚为什么这会导致上述错误表现出来(如果有人有任何见解,将不胜感激)但问题已经消失了......

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

    戴夫

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2012-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-20
        • 1970-01-01
        • 2011-11-23
        • 1970-01-01
        相关资源
        最近更新 更多