Visual Studio 2008 и 2010 ведут себя по-разному при обращении к сборкам в файловой системе? - PullRequest
0 голосов
/ 10 августа 2010

Я вижу странное явление в Visual Studio 2010.

Мой проект настроен так (я унаследовал это - не могу изменить в ближайшее время, к сожалению: - ():

  • приложение Winforms, которое использует Crystal Reports X (v10) в качестве механизма отчетов; Полная версия CR X Developer Edition установлена ​​на моем компьютере разработчика

  • несколько приложений Webforms, использующих Crystal Reports XI (v11) в качестве механизма отчетов - не могут установить полную версию CR XI, поскольку она конфликтует с CR X Dev Edition ....

Для того, чтобы все работало на нашем сервере сборки, я также создал папку Library внутри директории проекта приложения Winforms с нужными мне исполняемыми файлами CR X, а также папку Library внутри проекта веб-приложения. каталог с исполняемыми файлами CR XI.

В VS 2008 мне удалось выбрать необходимые сборки из соответствующей папки библиотеки в моих проектах Winforms (несколько библиотек классов и т. Д.) И в моих веб-приложениях. Все отлично работало.

Когда я обновился до Visual Studio 2010, теперь внезапно я вижу:

  • в моих приложениях Winforms все ссылки на исполняемые файлы CR X автоматически обновляются для использования файлов CR X из GAC - это , а не , что я хочу! Это не поможет, если я удалю эти ссылки и снова добавлю их, перейдя в папку Library - когда я выбираю их, VS2010, кажется, автоматически преобразует их в ссылки GAC ...

  • в моих веб-приложениях дела обстоят еще хуже: когда я выбираю сборки времени выполнения CR XI из папки Library, опять же, VS2010 автоматически обнаруживает, что есть похожие файлы (с тем же именем, но с разными версиями) в GAC и использует эти файлы вместо этого - теперь мои веб-приложения больше не работают .....

Что, черт возьми, происходит с VS 2010 здесь ?? Почему он не может оставить мои выборы в покое и позволить мне выбирать файлы времени выполнения из папки Library вместо того, чтобы настаивать на переходе в GAC ?? Что изменилось между VS 2008 и VS 2010 в этом отношении? У кого-нибудь есть понимание этого ??

1 Ответ

1 голос
/ 11 августа 2010

Может быть полезно либо

(1) перейдите в Инструменты \ Параметры \ Проект и решения \ Построить и запустить, измените многословность MSBuild на «диагностика», а затем в окне «Вывод» посмотрите, как работает логика разрешения ссылок MSBuild для этих сборок. То есть, если VS еще не сделал что-то смешное с базовым файлом .csproj

(2) сравните XML в файле проекта VS2008 с файлом проекта VS2010, чтобы увидеть, что находится в узлах <Reference>

Дикая спекулятивная догадка: проект VS2010 нацелен на «.NET 4.0 Client» (а не «.NET 4.0 (полный каркас)», и библиотекам требуется полный каркас, и MSBuild видит эту зависимость и использует резервную логику .

...