Тип XX существует в обеих библиотеках DLL

Я разрабатываю приложение silverlight C#, и я добавил ссылку на Microsoft DLL и получил следующее сообщение:

тип существует в обеих DLL

поскольку я использую элемент управления, определенный в обеих библиотеках DLL (один связан с SDK, другой я добавил сам).

после некоторых исследований в Интернете я попытался сделать псевдоним обеих библиотек DLL и импортировать их с помощью extern alias <alias_name>. Этот подход решен некоторая проблема в xaml.cs-код позади, но на самом деле не решил проблему в xaml. После этого Visual Studio пожаловалась, что один из элементов управления (из добавленной DLL) не определен в пространстве имен.

поэтому мне интересно, есть ли способ указать пространство имен в XML с помощью псевдонима?

спасибо.

2 ответов


Stackoverflow

MSDN

вам просто нужно добавить второй псевдоним в сборку с помощью разделителей-запятых.

например

<Aliases>global,alias_name</Aliases>

XAML будет использовать глобальный псевдоним, и вы можете выбирать и выбирать в своих классах.

.

Если вам нужно использовать обе сборки в одном месте, я думаю, что это решение является единственным.

в основном, создайте два класса-оболочки в отдельные пространства имен в собственном проекте для каждого требуемого класса, а затем ссылаться на пространства имен оболочки вместо конфликтующих сборок.


есть хороший способ, если вы используете класс из дублированного namespae в коде C# (не в XAML) http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html

используйте псевдоним внешней сборки. Укажите свойство "псевдонимы" ссылки на DLL.

  1. в обозревателе решений Visual Studio откройте папку ссылки.
  2. щелкните правой кнопкой мыши ссылку DLL, выберите Свойства
  3. введите значение псевдонима в поле " псевдонимы" свойство.
  4. пример: псевдоним для MyDLLv1.ссылка dll может быть "LegacyMyDLL".

укажите псевдоним в исходном коде C#:

// Old way
using MyNamespace;

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