如何在两个不同的DLL中访问一个具有相同完全限定名的类型

问题描述:

我需要参考程序集PresentationFramework.ClassicPresentationFramework.Luna,我有一种情况需要使用Microsoft.Windows.Themes.DataGridHeaderBorder类型。但是这会给出错误,因为这两个程序集都有这种类型定义。 我的意思是,我可以指任何人(经典或红月)的这种类型的做,它只是一个简单的Datagrid,在这里我需要检查,如果被点击的DataGridHeaderBorder如何在两个不同的DLL中访问一个具有相同完全限定名的类型

在此先感谢。

这是哪门子的局面external assembly aliases旨在解决。如果命令行编译不是您的事情,您还可以在Visual Studio的引用属性表中使用“别名”属性指定引用的别名。完整的示例请参见http://blogs.msdn.com/b/ansonh/archive/2006/09/27/774692.aspx

+0

嗨,我尝试了上面的选项,但遇到了问题,因为这不符合WPF项目的工作,并已报告为错误 - [错误链接](https://connect.microsoft.com/VisualStudio/feedback/details/615953 /参考别名 - 被忽视的,对含一些-XAML的文件 - 项目 - #细节)。我尝试了解决方法,但是我遇到了这个错误 - ** extern别名'Classic'没有在/参考选项中指定** – 2012-02-14 06:53:59

+0

这是一个很好的帮助,只是我不会使用WPF。我已经阅读了很多,并发现这是处理这种情况的实际解决方案,但此解决方案不适用于WPF应用程序,并已被MS标记为bug。这将在4.5版本中解决。大文章虽然。我终于删除了一个程序集引用,并试图在没有它的情况下执行。 – 2012-02-29 06:26:36

+0

我仍然会将此标记为答案。 – 2012-02-29 06:26:55

试试这个:

using Clasic = PresentationFramework.Classic; 
using Luna = PresentationFramework.Luna; 



namespace Test1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Clasic.Microsoft.Windows.Themes.DataGridHeaderBorder bClassic; 
      Luna.Microsoft.Windows.Themes.DataGridHeaderBorder bLuna; 
     } 
    } 
} 
+0

它不适合我。它说_找不到类型或命名空间名称'PresentationFramework'(你是否遗漏了使用指令或程序集引用?)_,尽管我已经包含了这两个程序集引用。 – 2012-02-13 17:23:38

+0

命名空间是否正确?验证/验证源类和Luna程序集并确保命名空间匹配并且不在其他命名空间中。程序集名称不必与名称空间相匹配,但通常情况如此。 – codechurn 2012-02-13 17:31:00

+0

@艺术 - 我已经验证过,并且名称空间并未植根于其他一些。这两个程序集的根名称空间都是Microsoft.Windows.Themes。你有没有尝试过这与WPF因为我的是一个** WPF应用程序**? – 2012-02-29 06:23:50