Тип XX существует в обеих библиотеках DLL
Я разрабатываю приложение silverlight C#, и я добавил ссылку на Microsoft DLL и получил следующее сообщение:
тип существует в обеих DLL
поскольку я использую элемент управления, определенный в обеих библиотеках DLL (один связан с SDK, другой я добавил сам).
после некоторых исследований в Интернете я попытался сделать псевдоним обеих библиотек DLL и импортировать их с помощью extern alias <alias_name>
. Этот подход решен некоторая проблема в xaml.cs-код позади, но на самом деле не решил проблему в xaml. После этого Visual Studio пожаловалась, что один из элементов управления (из добавленной DLL) не определен в пространстве имен.
поэтому мне интересно, есть ли способ указать пространство имен в XML с помощью псевдонима?
спасибо.
2 ответов
вам просто нужно добавить второй псевдоним в сборку с помощью разделителей-запятых.
например
<Aliases>global,alias_name</Aliases>
XAML будет использовать глобальный псевдоним, и вы можете выбирать и выбирать в своих классах.
.
Если вам нужно использовать обе сборки в одном месте, я думаю, что это решение является единственным.
в основном, создайте два класса-оболочки в отдельные пространства имен в собственном проекте для каждого требуемого класса, а затем ссылаться на пространства имен оболочки вместо конфликтующих сборок.
есть хороший способ, если вы используете класс из дублированного namespae в коде C# (не в XAML) http://csc-technicalnotes.blogspot.ru/2009/07/type-exists-in-both-dlls.html
используйте псевдоним внешней сборки. Укажите свойство "псевдонимы" ссылки на DLL.
- в обозревателе решений Visual Studio откройте папку ссылки.
- щелкните правой кнопкой мыши ссылку DLL, выберите Свойства
- введите значение псевдонима в поле " псевдонимы" свойство.
- пример: псевдоним для MyDLLv1.ссылка dll может быть "LegacyMyDLL".
укажите псевдоним в исходном коде C#:
// Old way
using MyNamespace;
// New way
extern alias LegacyMyDLL;
using LegacyMyDLL.MyNamespace;