Почему я не могу сослаться на мою библиотеку классов? - PullRequest
86 голосов
/ 09 февраля 2010

У меня есть решение, которое содержит веб-сайт и библиотеку классов в Visual Studio 2008.

Затем у меня есть другой проект веб-сайта вне решения, который должен ссылаться на библиотеку классов. Я щелкаю правой кнопкой мыши по папке Bin или Project и выбираю Add Reference, затем выбираю мой проект Class Library, он добавляет 15 или около того DLL-файлов, которые необходимы библиотеке классов, в папку bin веб-сайтов, но ни один из файлов .cs не распознает операторы using.

using MyLibrary.MyFolder;

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

ReSharper может распознать, что ему нужна ссылка, и предлагает "сделать ссылку на MyLibrary и использовать MyFolder". Я не уверен, почему он предлагает добавить ссылку, которая у меня уже есть. Когда я иду с предложением, я получаю ошибку

"Не удалось ссылаться на модуль. Возможно, ссылка создаст циклические зависимости между проектами."

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

Ответы [ 20 ]

0 голосов
/ 21 марта 2019

Если оба проекта содержатся в одном решении, будет более уместно, если вы добавите ссылку на нужный вам проект, а не его скомпилированную dll

enter image description here

0 голосов
/ 08 марта 2019

После подтверждения использования той же версии asp.net. Я удалил проект. почистил решение и заново добавил проект. это то, что сработало для меня.

0 голосов
/ 18 марта 2018

Вы можете забыть добавить ссылку библиотеку классов, которую вам нужно было импортировать.

Щелкните правой кнопкой мыши библиотеку классов, в которую вы хотите импортировать (которая содержит несколько импортированных библиотек классов), -> Добавить-> Ссылка (Выберите Проекты-> Решение-> выберите библиотеку классов, из которой вы хотите импортировать-> OK)

0 голосов
/ 01 августа 2016

Я недавно наткнулся на похожую проблему. Я работаю в Visual Studio 2015 с Resharper Ultimate 2016.1.2. Я пытался добавить новый класс в свою кодовую базу, пытаясь сослаться на класс из другой сборки, но Resharper выдаст ошибку для этого пакета.

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

Добавление ключевого слова global :: до того, как требуемое пространство имен помогло мне сослаться на класс, который я действительно искал. Более подробную информацию об этом можно найти на странице, указанной ниже:

https://msdn.microsoft.com/en-us/library/c3ay4x3d.aspx

0 голосов
/ 27 июня 2016

У меня была похожая проблема. Что сработало для меня, так это то, что я добавил неправильную библиотеку классов из визуальной студии . Я добавил с помощью функции поиска Visual Studio.

Мне нужно было Добавить новый проект> Visual C #> Библиотека классов . И эта вновь добавленная библиотека классов является правильной и теперь может быть добавлена ​​как ссылка на любой проект.

0 голосов
/ 11 марта 2016

К сожалению, единственное, что сработало для меня, - это полное удаление и воссоздание проекта библиотеки классов, после временного копирования файлов классов в него в другом месте. Только тогда веб-проект ASP.Net распознает операторы using, относящиеся к проекту библиотеки классов. Это было с Visual Studio 2010, не используя ReSharper.

0 голосов
/ 19 января 2016

При использовании TFS выполнение Get last (рекурсивное) не всегда работает. Вместо этого я вынуждаю получить последнюю версию, нажав Source control => Получить конкретную версию, затем щелкнув оба поля Это имеет тенденцию работать.

enter image description here

Если это все еще не работает, то удаление файла suo (обычно находящегося в том же месте, что и решение) вынуждает Visual Studio получить все файлы из источника (и впоследствии перестроить файл suo).

Если это не сработает, попробуйте закрыть все открытые файлы и закрыть Visual Studio. При следующем открытии Visual Studio это должно быть исправлено. Есть исправленная ошибка, которая устраняется таким образом.

0 голосов
/ 19 октября 2015

Я столкнулся с этой проблемой и решил ее, закрыв Visual Studio, снова открыв Visual Studio, очистив и восстановив решение. Это сработало для меня.

0 голосов
/ 24 августа 2010

У меня была похожая проблема в VS 2010 при создании тестового проекта для приложения MVC 2. Симптомы были идентичны.

Сообщение от ReSharper несколько вводило в заблуждение. На мгновение я полностью проигнорировал ReSharper и сделал это «ручным способом VS»:

  1. Я почистил раствор.
  2. Я вручную добавил ссылку на проект MVC.
  3. Я вручную добавил директивы using.
  4. Ctrl-Shift-B

На этом этапе я получил ошибку компиляции: я должен был сослаться на сборку System.Web.Mvc в моем тестовом проекте (вздох). Добавление этой ссылки приводит к компиляции проекта. Проблемы с ReSharper остаются, но тестовый ReSharper работает.

Когда я перезагружаю VS, ошибки ReSharper также исчезают. Я не уверен, требуется ли перезагрузка - достаточно просто закрыть файл .cs.

С этого момента, когда я вижу сообщение ReSharper

Не удалось сослаться на модуль. Наверное, ссылка даст круговой зависимости между проектами.

Я прочитаю

Не удалось сослаться на модуль. Наверное, ссылка даст круговой зависимости между проектами, или вы пропускаете некоторые ссылки на зависимости ссылки.

0 голосов
/ 25 января 2012

Другое возможное исправление, которое только что сработало для меня:

Если у вас есть сборка A, которая ссылается на сборку B, обе из которых ссылаются на непроектную (внешнюю) сборку X, а код сборки B не распознаетчто вы ссылались на X, затем попробуйте выполнить следующие шаги в следующем порядке:

  • Сбросить ссылку на X из ОБА A и B
  • Восстановить ссылку на X в B
  • Повторно создайте ссылку на X в A

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

...