Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - совместное использование сборок разных версий

Ответить
Настройки темы
.NET - совместное использование сборок разных версий

Аватара для Surround

Ветеран


Сообщения: 908
Благодарности: 20

Профиль | Отправить PM | Цитировать


Изменения
Автор: Surround
Дата: 11-05-2012
Здравствуйте! Возникла тут такая нетривиальная задачка с конвертированием версий хранения данных, скажем так.
Есть две сборки: одна имеет версию v1, другая - v2. Каждая из них работает с данным в формате f1 и f2, соответственно. То есть при помощи f1 получаются данные в промежуточный результат и он записывается куда-то там через f2.
Суть в том, что пространства имен у v1 и v2 - одинаковы. Отличается только версия сборки и код некоторых методов (для работы с данными эволюционировавших форматов). В остальном все одинаково. Пытался обойти неоднозначность следующим образом: во-первых, переименовал dll-ки (чтобы подключить к проекту по ссылкам и одну, и другую). Для первой в свойствах в студии указал псевдоним alias1, для второй - alias2 (по умолчанию у всех был же global).
Далее в коде:
Код: Выделить весь код
extern alias alias1;
extern alias alias2;
using namespace1 = alias1::ПростанствоИмен.Подпространство;
using namespace2 = alias2::ПростанствоИмен.Подпространство;

namespace1::Класс varible1 = namespace1::Класс.Метод(); //вроде прокатывает
namespace2::Класс varible2 = namespace2::Класс.Метод(); //пишет, что Неявное преобразование типа из сборки1 (та, которая alias1) недопустимо в тип из сборки2(alias2). Как?!
(ПростанствоИмен.Подпространство) и (Класс.Метод) - одинаковы в обоих случаях, просто вызываются из различных сборок

в Warning-ах пишут:
Цитата:
Не удается решить конфликт между "ПростанствоИмен.Подпространство, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519" и "ПростанствоИмен.Подпространство, Version=1.0.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519". Произвольный выбор "ПростанствоИмен.Подпространство, Version=2.0.0.0, Culture=neutral, PublicKeyToken=7148afe997f90519".
В принципе, суть ошибки становится понятна - среда выбирает по умолчанию более позднюю версию, но игнорирует алиасы. Вернее, слева от присваивания игнорирует, справа - нет.


Пробовал комментить все, что касается alias1 и namespace1, все равно та же ошибка для alias2 и namespace2
Лабал MSDN на эту тему, решения не нашел. Прошу совета Спасибо!

Отправлено: 18:11, 11-05-2012

 


Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » .NET - совместное использование сборок разных версий

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Использование сборок Windows: За и Против vlad309523 Флейм 195 27-11-2011 23:22
Ошибка - Конфликты/Совместное использование (прерывания) iDrug Microsoft Windows 2000/XP 5 04-04-2011 08:02
Звук - Совместное использование USB- и обычных (TPS) колонок paulkorotoon Прочее железо 0 13-12-2010 23:25
Загрузка - Совместное использование Windows XP и 2000 Sergey Po Microsoft Windows 2000/XP 3 15-11-2010 22:04
Совместное использование win2003 NordWest Microsoft Windows NT/2000/2003 7 06-11-2009 10:06




 
Переход