如何在两个不同的DLL中访问一个具有相同完全限定名的类型
我需要参考程序集PresentationFramework.Classic
和PresentationFramework.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。
试试这个:
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;
}
}
}
它不适合我。它说_找不到类型或命名空间名称'PresentationFramework'(你是否遗漏了使用指令或程序集引用?)_,尽管我已经包含了这两个程序集引用。 – 2012-02-13 17:23:38
命名空间是否正确?验证/验证源类和Luna程序集并确保命名空间匹配并且不在其他命名空间中。程序集名称不必与名称空间相匹配,但通常情况如此。 – codechurn 2012-02-13 17:31:00
@艺术 - 我已经验证过,并且名称空间并未植根于其他一些。这两个程序集的根名称空间都是Microsoft.Windows.Themes。你有没有尝试过这与WPF因为我的是一个** WPF应用程序**? – 2012-02-29 06:23:50
嗨,我尝试了上面的选项,但遇到了问题,因为这不符合WPF项目的工作,并已报告为错误 - [错误链接](https://connect.microsoft.com/VisualStudio/feedback/details/615953 /参考别名 - 被忽视的,对含一些-XAML的文件 - 项目 - #细节)。我尝试了解决方法,但是我遇到了这个错误 - ** extern别名'Classic'没有在/参考选项中指定** – 2012-02-14 06:53:59
这是一个很好的帮助,只是我不会使用WPF。我已经阅读了很多,并发现这是处理这种情况的实际解决方案,但此解决方案不适用于WPF应用程序,并已被MS标记为bug。这将在4.5版本中解决。大文章虽然。我终于删除了一个程序集引用,并试图在没有它的情况下执行。 – 2012-02-29 06:26:36
我仍然会将此标记为答案。 – 2012-02-29 06:26:55