Почему я не могу сослаться на свою библиотеку классов?

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

У меня затем есть другой проект веб-сайта за пределами решения, которое должно сослаться на библиотеку классов. Я щелкаю правой кнопкой по папке Bin, или Проект и выбор Добавляют Ссылку, затем выбирают мой Проект Библиотеки классов, это добавляет приблизительно 15 DLLs, в которых библиотека классов нужна к папке мусорного ведра веб-сайтов, но ни один из .cs файлов не распознает операторы использования.

using MyLibrary.MyFolder;

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

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

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

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

86
задан Brandon 28 April 2011 в 18:04
поделиться

5 ответов

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

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

На самом деле сработало открытие проекта в Visual Studio, закрытие всех открытых вкладок и его закрытие.

Раньше я оставлял вкладки открытыми, потому что не думал, что это имеет значение (и я почти никогда не закрываю вкладки, которые использую).

84
ответ дан 24 November 2019 в 07:56
поделиться

Поскольку они оба находятся в одном решении, вместо добавления ссылки на DLL добавьте ссылку на сам проект библиотеки классов (диалоговое окно «Добавить ссылку» будет вкладка для этого).

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

2
ответ дан 24 November 2019 в 07:56
поделиться

Это похоже на аналогичную проблему с ReSharper:

http://www.jetbrains.net/devnet/thread/275827

По словам одного пользователя в этой теме, принудительная сборка исправляет проблему (CTRL+Shift+B) после первой сборки...

Похоже на проблему с ReSharper именно в их случае... Пробовали ли вы собирать, невзирая на предупреждения и возможные ложные ошибки?

3
ответ дан 24 November 2019 в 07:56
поделиться

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

Моя точка зрения: вместо того, чтобы обвинять ReSharper или VS, может быть хорошей идеей дважды проверить, действительно ли каким-то образом не существует какой-то круговой ссылки. Чаще всего классы с одинаковыми именами в разных модулях могут вызывать путаницу и часто являются признаком плохого дизайна (как в моем случае).

4
ответ дан 24 November 2019 в 07:56
поделиться

У меня была аналогичная проблема в 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

Failed to reference module. Наверное, ссылка будет производить циркулярный зависимости между проектами.

Я прочитаю

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

0
ответ дан 24 November 2019 в 07:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: