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



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



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



using MyLibrary.MyFolder;


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



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




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




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

1025   18  

18 ответов:

кроме того, убедитесь, что проекты нового решения работают с совместимой платформой для проекта, который вы пытаетесь включить. Я пытался включить ссылку на проект 4.0 в проект 3.5.

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

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

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

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

одна из возможностей заключается в том, что целевая версия .NET Framework библиотеки классов выше, чем у проекта.

У меня была аналогичная проблема, все мои ссылки будут испорчены Resharper-решение, которое сработало для меня, состоит в том, чтобы очистить кэш Resharper, а затем перезапустить VS

Инструменты - > Параметры - > resharper - > параметры - > общие - > нажмите кнопку Очистить кэш и перезагрузите VS

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

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

Это звучит как аналогичная проблема с ReSharper:

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

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

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

у меня была эта проблема. Мне потребовалась целая вечность, чтобы понять это. У меня были люди через плечо, чтобы помочь. Мы восстановили, очистили и перезапустили Visual studio, и это не исправило его. Мы удалили и повторно добавили ссылки...

все безрезультатно.... Пока!

решение моей проблемы было в том, что мое объявление класса было написано неправильно.

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

поскольку ошибка была на ранней стадии в имени, она не появлялась в списке классов intellisense, когда я начал печатать.

например

имя класса : Message.cs

объявления:

public class Massage
{
    //code here

}

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

ввод M перечислил слишком много классов, поэтому я набрал e, который не появился в ошибочной версии, которая дала такое впечатление, что класс не принимается компилятором.

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

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

Если вы ссылаетесь на сборки для проектов, которые находятся в том же решении, добавьте ссылку на проект (используя вкладку "Проекты"), а не просматриваете dll в папке \bin\Debug (или \bin\Release) (используя вкладку "Обзор"). См. снимок экрана ниже. Найдите файл сборки/dll только в том случае, если он считается внешней сборкой.

enter image description here

Я удалил *.csproj.пользователь (файл resharper) моего проекта, затем закройте все вкладки и снова откройте его. После этого я смог скомпилировать свой проект и не было никаких предупреждений resharper.

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

сообщение от Решарпера было несколько обманчивым. На мгновение я полностью проигнорировал ReSharper и сделал это "вручную VS way":

  1. очистить решение.
  2. Я вручную добавил ссылку на проект MVC.
  3. Я вручную добавил директивы using.
  4. ctrl-shift-b

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

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

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

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

Я буду читать

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

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

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

  • отбросьте ссылку на X как из A, так и из B
  • воссоздать ссылку на X в B
  • воссоздать ссылку на X в A

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

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

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

enter image description here

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

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

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

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

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

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

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

У меня была аналогичная проблема. Что сработало для меня, так это то, что я добавил неверная библиотека классов из visual studio. Я добавил с помощью функции поиска visual studio.

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

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

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

Comments

    Ничего не найдено.