2013-04-12 3 views
9

Я получаю следующее сообщение об ошибке, прерывисто:Неоднозначность Ссылка Ошибка

Не удалось загрузить файл или сборку «com.mycompany.myapp» или один из его зависимостей. Выбранный ассемблер сборки не соответствует ссылочной позиции сборки .

У меня есть библиотека элементов управления Ajax, которую я создал и скомпилировал в DLL. Этот проект имеет ссылки на проект A (com.mycompany.myapp). В моем основном веб-приложении есть ссылка на эту DLL, а также есть ссылка на Project A. Иногда эта ошибка возникает, когда я пытаюсь перестроить мое веб-приложение. Кажется, что ссылки на Project A не синхронизируются между DLL и веб-приложением.

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

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

+0

Попробуйте перезагрузить сборку, удалите ее из ссылки и добавьте ее снова. Это должно решить проблему. – IWIH

ответ

1

Если у вас есть все ваши проекты внутри одного и того же решения, вам нужно убедиться, что они все ссылки на проекты, а не ссылки на файлы. Вы можете проверить это, щелкнув правой кнопкой мыши проект и перейдя к свойствам => ссылки.

В списке ссылок вы увидите столбец с именем «copy local». Если для этого параметра установлено значение false, это означает, что вы ссылаетесь на него по файлу вместо проекта (который не обновляет DLL после его сборки). Чтобы решить эту проблему, удалите ссылку и добавьте ее снова (убедитесь, что вы ссылаетесь на нее из своего решения, а не ссылкой на DLL на вашем жестком диске).

Если у вас нет всех проектов внутри одного и того же решения, это нормальное поведение. Предположим, что ваша библиотека управления Ajax находится вне решения.

Исходное положение было бы что-то вроде этого:

  • Ajax ссылки A (версия 1)
  • Проект ссылается на A (версия 1)
  • Проект ссылается Ajax (версия 1)

После того, как вы построите свое решение (без проекта Ajax внутри него), у вас будет следующая ситуация:

  • Ajax ссылки A (версия 1)
  • Проект ссылается на A (версия 2)
  • Проект ссылается Ajax (версия 1)

Как вы можете видеть, компилятор вдруг нуждается ссылка на версии 1 и версии 2, так что это невозможно, и это дает вам ошибку. Это также объясняет, почему это работает, когда вы делаете пересоздание и удаляете DLL и добавляете его снова.

Решение здесь заключается в том, чтобы добавить проект Ajax в ваше решение и перестраивать его каждый раз.

1

Это может помочь вам. У меня такая же проблема, как и раньше, что я сделал, я удалил файлы в папке bin, а затем перестроил приложение, а затем добавил другой проект в основной проект, а затем перестроил их оба.

"Could not load file or assembly" error but I don't know which project is referencing this assembly with old number

+0

Спасибо за ответ, но это не сработало – jason

1

Убедитесь, что ваша сборка «com.mycompany.myapp» не имеет атрибута AssemblyVersion в файле AssemblyInfo.cs или что в версии нет звездочек, которые приводят к автоматической генерации версий.

Просто мысль.

Смежные вопросы