2012-08-01 41 views
6

我正在开发一个Silverlight C#应用程序,我已经加入到微软DLL的引用,并得到了以下消息:XX中都存在的DLL类型

类型在这两个DLL中存在

因为我使用的是在两个DLL中定义的控件(一个与SDK相关联,另一个我自己添加)。

在做了一些关于互联网的研究之后,我尝试制作两个DLL的别名,并使用extern alias <alias_name>导入它们。这种方法解决了xaml.cs代码中的一些问题,但并未真正解决xaml中的问题。在我这样做之后,Visual Studio抱怨说其中一个控件(来自我添加的DLL)没有在名称空间中定义。

所以我想知道是否有一种方法来使用别名在XML中指定命名空间?

谢谢。

+0

你正在开发由framework_使用的_same samespace控制,是什么?为什么? – devundef 2012-08-01 17:24:26

+0

不,我没有开发,但使用了我在使用的两个dll中定义的控件。 – 2012-08-01 17:27:58

回答

4

Stackoverflow

MSDN

你只需要一个第二添加别名使用逗号分隔符的组合。

<Aliases>global,alias_name</Aliases> 

XAML将利用全球的别名,你可以挑选你的类选择。

如果你需要在一个地方使用这两个组件,I think this solution is the only one.

基本上,在自己的项目为每个所需类中创建不同的命名空间两个包装类,然后引用的,而不是相互冲突的组件包装命名空间。

+0

嗨谢谢,我试过这种方法,但它似乎不像解决问题给我。 xaml控制元素(让控制'LL')在dll中定义,所以我想要做一些类似于指定我在xaml中使用的'LL'控件来自其中一个dll而不是另一个,因为我没有认为我有另一次机会来指定控件的名称空间。谢谢 – 2012-08-01 18:21:24

+0

找到了替代方案... – 2012-08-01 18:38:31

+0

这似乎有点哈克,但谢谢你! – 2012-08-01 19:09:46

2

有一个很好的方式,如果你在C#代码(不XAML) http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html

使用外部组件别名使用类从复制namespae。 指定DLL引用的“别名”属性。

  1. 在Visual Studio解决方案资源管理器中,打开引用文件夹。
  2. 右键单击DLL参考,选择属性
  3. 在“别名”属性中输入别名值。
  4. 示例:到MyDLLv1.dll引用的别名可以是“LegacyMyDLL”。

在C#源代码指定别名:

// Old way 
using MyNamespace; 

// New way 
extern alias LegacyMyDLL; 
using LegacyMyDLL.MyNamespace; 
相关问题