Проект Ссылки DLL версия ад - PullRequest
19 голосов
/ 01 марта 2010

У нас проблемы с тем, чтобы Visual Studio выбрала последнюю версию DLL из одного из наших проектов.

У нас есть несколько проектов библиотек классов (например, BusinessLogic, ReportData) и несколько веб-служб, каждый из которых имеет ссылку на DLL-библиотеку подключений, которую мы написали (эта ссылка на DLL-подключаемость является проблемой).

Мы всегда указываем ссылки на DLL в папке bin / debug (это место, где мы всегда собираемся для любого данного проекта), и все пользовательские ссылки на DLL имеют CopyLocal = True и SpecificVersion = False

ReportData имеет ссылку на бизнес-логику (которая также имеет ссылку на связь - я не понимаю, почему это должно вызывать проблемы, но подумал, что стоит упомянуть)

Странная вещь, когда вы нажимаете «Добавить ссылку» и переходите к Connectivity / bin / debug - при наведении курсора мыши на файл DLL отображается правильная (последняя) версия (версия и версия файла всегда увеличиваются вместе. ), но когда вы нажимаете ОК, предыдущий номер версии вытягивается, хотя. Даже когда я смотрю в папке отладки текущих проектов (куда локальная копия поместит DLL после компиляции), в которой отображается номер последней версии. - НЕТ, ГДЕ я могу найти предыдущую версию DLL вне Visual Studio, но в ссылках на этот проект она имеет старую версию - даже если путь правильный.

Я в растерянности относительно того, откуда он мог получить старые версии. Или даже почему он этого хочет.

Это, пожалуй, самая неприятная проблема, с которой я когда-либо сталкивался.

Кто-нибудь знает, как обеспечить загрузку последней версии (желательно автоматически или при компиляции).

EDIT:

Хотя это не совсем тот сценарий, с которым я имею дело, я читал эту статью и где-то упоминалось, что CLR игнорирует номера ревизий. Понятно (хотя раньше это не было проблемой - у нас редакция 39), поэтому я подумал, что обновлю номер сборки, но все равно не сработало. В тщетной попытке я решил обновить младший номер версии и посмотреть, будет ли это иметь значение.

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

Дальнейшее редактирование: В других библиотеках классов это, похоже, решило проблему, однако в тестовом приложении Windows оно по-прежнему извлекает предыдущую версию через: (

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

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

Кто-нибудь имел эту проблему раньше и знает, как ее обойти?

HELP!

Ответы [ 11 ]

0 голосов
/ 02 июня 2012

Включите FusionLog и после сбоя загрузки DLL откройте файл с именем DLL в папке C: \ FusionLog \ Default \ devenv.exe.Это покажет путь от места, где DLL была действительно загружена.

В моем случае старая версия загадочно появилась в

C: \ Program Files \ Microsoft Visual Studio 10 \ Common7 \ IDE!

Чтобы это больше не повторилось, я добавил правило безопасности «Запретить запись» для всех в Common7 \ IDE.

...