【问题标题】:The Type XX exists in both DLLs类型 XX 存在于两个 DLL 中
【发布时间】:2012-07-30 15:01:52
【问题描述】:

我正在开发一个 silverlight C# 应用程序,我添加了对 Microsoft DLL 的引用并收到以下消息:

该类型存在于两个 DLL 中

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

在网上做了一些研究后,我尝试为这两个DLL创建一个别名,并使用extern alias <alias_name>导入它们。这种方法解决了后面xaml.cs代码中的一些问题,但并没有真正解决xaml中的问题。完成此操作后,Visual Studio 抱怨其中一个控件(来自我添加的 DLL)未在命名空间中定义。

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

谢谢。

【问题讨论】:

  • 您正在开发一个具有框架使用的相同空间的控件,是吗?为什么?
  • 不,我不是在开发,而是使用在我正在使用的两个 dll 中定义的控件。

标签: .net silverlight namespaces assemblies assembly-references


【解决方案1】:

Stackoverflow

MSDN

您只需要使用逗号分隔符为您的程序集添加第二个别名。

例如

<Aliases>global,alias_name</Aliases>

XAML 将使用全局别名,您可以在自己的类中进行选择。

.

如果您需要在一个地方使用这两个程序集,I think this solution is the only one.

基本上,在您自己的项目中为每个必需的类在不同的命名空间中创建两个包装器类,然后引用包装器命名空间而不是冲突的程序集。

【讨论】:

  • 嗨,谢谢,我尝试了这种方法,但它似乎无法解决我的问题。 xaml 控件元素(让我们调用控件LL)在两个 dll 中定义,所以我想做一些事情,比如指定我在 xaml 中使用的LL 控件来自其中一个 dll,但不是来自另一个,因为我不想我还有机会指定控件的命名空间。谢谢
【解决方案2】:

如果您在 C# 代码中使用来自重复命名空间的类(不是在 XAML 中),那么有一个好方法 http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html

使用外部程序集别名。 指定 DLL 引用的“别名”属性。

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

在 C# 源代码中指定别名:

// Old way
using MyNamespace;

// New way
extern alias LegacyMyDLL;
using LegacyMyDLL.MyNamespace;

【讨论】:

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