【问题标题】:what to do if two libraries has exactly the same classes?如果两个库具有完全相同的类怎么办?
【发布时间】:2012-11-11 17:16:16
【问题描述】:

我有这样的错误

错误 8 'System.Threading.Volatile' 类型存在于两者中 'c:\Oleg\projects\MBClient\packages\Disruptor.1.1.0\lib\net40\Atomic.dll' 和 'c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\mscorlib.dll' C:\Oleg\projects\MBClient\MBClient\CustomIndeces\CompositeIndex.cs 77 40 MBClient

我不知道该怎么做,因为完全限定名称不能准确识别要使用的类。如何解决这个问题?

【问题讨论】:

    标签: c#


    【解决方案1】:

    您可以通过右键单击引用列表中的程序集、转到属性并将“别名”属性设置为您想要的任何值来为 VS 中的库分配别名。然后,要使用此程序集中的类型,请在命名空间的开头使用 extern alias

    例子:

    namespace TestApp
    {
        extern alias Threading1;
        using Threading1.System.Threading.Volatile;
    }
    

    extern alias msdn

    【讨论】:

      【解决方案2】:

      也许你可以为该命名空间定义一个aliasTimer 类的示例可在以下命名空间中找到

      using WinTimer = System.Windows.Forms;
      using ThreadTimer = System.Threading;
      

      然后你可以像这样使用它,

      WinTimer.Timer _tmr = new WinTimer.Timer();
      ThreadTimer.Timer _Thrtmr = new ThreadTimer.Timer();
      

      【讨论】:

      • 我不明白我应该怎么做。两个库都有System.Threading.Volatile 类。
      • 这并不能解决两个或多个程序集之间的名称冲突问题。看我的回答。
      【解决方案3】:

      【讨论】:

      • 该链接中的信息假定这些类位于两个不同的命名空间中,此处并非如此。
      • 对不起,我以为链接涵盖了外部别名声明。
      猜你喜欢
      • 2015-10-23
      • 2019-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-15
      • 1970-01-01
      • 2014-01-30
      • 1970-01-01
      相关资源
      最近更新 更多