2009-10-23 2 views
4

В моем файле проекта, у меня есть следующая запись:Visual Studio 2008 решения неправильно ссылки

<Reference Include="Microsoft.Practices.Unity, Version=1.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\..\..\..\Libraries\Microsoft.Practices.Unity.dll</HintPath> 
</Reference> 

что в абсолютном выражении переводится:

C: \ DEV \ LUT600 2.1.1 \ OCC600 \ Библиотеки

Как-то, когда я пытаюсь скомпилировать проект, Visual Studio загружает ссылку из совершенно другого пути:

/ссылка: «C: \ Program Files \ Microsoft Enterprise Library 4.1 - Октябрь 2008 \ Bin \ Microsoft.Practices.Unity.dll.

Решения для этого местоположения являются полной загадкой, так как эта DLL не упоминается нигде в этом проекте.

У меня есть определенный Verion для true, но он по-прежнему решает ссылку из этого места.

Любые идеи?

TIA.

Клаус

+0

Переименование C: \ Program Files \ Microsoft Enterprise Library 4.1 - Октябрь 2008 \ Bin к C: \ Program Files \ Microsoft Enterprise Library 4.1 октября 2008 г. \ Bin_bk заставляет его использовать правильную ссылку, но почему? –

+0

Являются ли библиотеки Unity одной и той же версией? Если да, имеет ли значение, что он нашел тот же файл в другом месте? – Shiv

ответ

3

Может быть, что ссылка не имеет тот же номер версии в качестве сборки в конкретном месте, поэтому он начинает искать в другом месте, чтобы найти «лучший» матч.

Вместо того, чтобы просто указывать указанный файл, VS всегда использует пробный путь для поиска ссылочных сборок. Это часто дает случайный эффект «выбрать что-нибудь с тем же именем». На нашем сервере сборки я однажды нашел 996 экземпляров сборки. 995 были одинаковыми, правильная версия, и один был неправильной версией. И однажды наша сборка перестала работать, потому что без видимых причин вдруг решила использовать одну неправильную копию!

Попробуйте удалить и воссоздать ссылку. Это часто помогает.

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

0

Вы, скорее всего, добавили ссылку из GAC (Global Assembly Cache). Длинный список ссылок, требующих времени для загрузки, - это ссылки из GAC. Попробуйте удалить свою ссылку и повторно добавить ее, просмотрев эту сборку в диалоговом окне «Добавить ссылки».

+0

Эти сборки не находятся в GAC. Я добавил их, перейдя в конкретную папку, но кто-то VS проигнорировал это. –

0

Это может быть поиск dll в пути поиска, прежде чем он оценит HintPath. Как упоминалось в this post, есть два места, которые ищут до HintPath.

  • Файлы из текущего проекта - обозначены {CandidateAssemblyFiles}.
  • $ (ReferencePath) свойство, которое исходит из файла .user/target.
Смежные вопросы