Visual Studio отказывается создавать проект из-за отсутствия ссылки на сборку, которая не отсутствует

Я создаю службу Windows C # и добавил в свой проект пару ссылок на сборку (на другие мои собственные проекты).

При сборке я получаю следующую ошибку:

«Ошибка 25 Не удалось найти тип или имя пространства имен TestClass (вам не хватает директивы using или ссылки на сборку?»

Достаточно интересно, что путь ссылки в csproj-файле правильный, и, кроме того, классы и пространства имен из указанного проекта, которые, согласно Visual Studio, отсутствуют, подбираются Intellisense и даже «перейти к определению» функция работает нормально. Кроме того, у меня есть другие проекты в той же папке, что и моя новая служба Windows, и они отлично подобрали ссылки на сборки. Все упомянутые проекты включены в решение.

Я использую Visual Studio 2013 Update 3. На самом деле нет кода, который я мог бы показать, который дал бы вам больше информации, но дайте мне знать, если вы хотите увидеть несколько снимков экрана или что-то в этом роде.

Попытки пока:

  • Пытался перезапустить VS и перезагрузить все проекты
  • Пытался добавить пути на страницу путей ссылки на свойства.
  • Пробовал все шаги в этом руководстве: https://msdn.microsoft.com/en-us/library/ayds71se.aspx

Обновить. Когда я выбираю одну из «отсутствующих» ссылок в списке ссылок и перехожу к свойствам, путь не определен. Тем не менее, относительный путь в csproj-файле правильный. Сбивает с толку.

Обновление 2. Удаление всех ссылок, перезагрузка проектов и последующая чистка исправили это за меня. Судя по всему, проблема была вызвана тем, что все dll не обновлялись в стеке сборки.


person user1531921    schedule 30.04.2015    source источник
comment
Вы пробовали удалить и прочитать ссылку?   -  person Lasse V. Karlsen    schedule 30.04.2015
comment
Каковы целевые рамки ссылки и вашего проекта ?. Цель проекта должна быть равна или выше, чем у эталона.   -  person Mord Zuber    schedule 30.04.2015
comment
это произошло после того, как вы изменили библиотеки DLL после их добавления, а затем попытались удалить и добавить снова? похоже, что это происходит в этом сценарии.   -  person nayef harb    schedule 30.04.2015
comment
Вы уже сравнивали ссылки в вашем .csproj с .csproj хорошего проекта?   -  person Filburt    schedule 30.04.2015
comment
Версии фреймворка такие же. Я попытался удалить и прочитать ссылки. Я сравнил референсы в здоровых проектах. Текст буквально идентичен.   -  person user1531921    schedule 30.04.2015
comment
Несколько других возможных решений: stackoverflow.com/questions/450999/   -  person Mackan    schedule 30.04.2015
comment
Да, я пробовал эти решения, но они не помогли. Этот парень не получил ссылок на Intellisense, поэтому я считаю, что его проблема была в другом. Но теперь моя проблема решена!   -  person user1531921    schedule 30.04.2015


Ответы (7)


1. удалить все ссылки

2. построить -> чистое решение

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

person nayef harb    schedule 30.04.2015
comment
Я попытался удалить каждую ссылку, а затем сделал чистку. Кажется, это сработало. Спасибо! - person user1531921; 30.04.2015
comment
Мне нужно подождать пару минут, прежде чем я смогу это принять. Я сделаю это, когда смогу. - person user1531921; 30.04.2015
comment
Если вы получили решение от третьей стороны, проверьте, что ваше решение и стороннее решение совпадают с версиями .NET Framework. Была ли моя проблема, и простое изменение версии помогло - person chris c; 05.12.2019

В моем случае целевая структура проекта сборки и целевая структура проекта, в котором я хочу использовать эту сборку, отличаются. Целевая структура проекта сборки была 4.5, а целевая структура моего проекта была 4.0.

Когда я меняю целевую структуру моего проекта на целевую структуру проекта сборки, то есть с 4.0 до 4.5, она работает нормально.

Для изменения целевой структуры проекта,

Щелкните правой кнопкой мыши проект -> Свойства -> Приложение -> Целевая платформа

Эта целевая платформа - это раскрывающийся список, выберите нужную платформу из этого списка.

person mayank    schedule 21.08.2017

Другой возможной проблемой может быть несоответствие целевых версий .NET между сборками. Я испытал те же симптомы, и установка той же версии фреймворка помогла мне.

person zmaten    schedule 21.08.2017

У меня сработала переустановка пакетов.

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

update-package -reinstall

Вы можете настроить таргетинг на один пакет с помощью:

update-package PACKAGE_NAME -reinstall

person Ryan Varley    schedule 12.09.2019

Я думаю, вам не хватает библиотеки Nuget под названием: Bogus. Вы можете установить его из установщика Nuget-Solution в Visual Studio. Просто установите его и добавьте using Bogus.DataSets; в свой файл класса. Надеюсь, это решит вашу проблему.

person Liakat    schedule 21.07.2020

У меня такая же проблема. Или, по крайней мере, симптомы были такими же. Мое решение находилось на сетевом диске. Перенос решения на локальный диск решил проблему для меня.

Причина, по-видимому, заключалась в том, что Windows 10 не считала сетевой диск достаточно надежным местом. Он работал нормально, пока мне не удалось каким-то образом сломать свое решение. У Visual Studio явно не было необходимых прав для выполнения необходимых операций по исправлению ошибок.

person Iizuki    schedule 20.06.2019

У меня возникла аналогичная проблема: компилятор пожаловался на отсутствие ссылки на сборку, даже если она была в файле csproj.

Ошибка без ссылки:

ошибка CS0246: не удалось найти тип или имя пространства имен IMyService (вам не хватает директивы using или ссылки на сборку?)

Итак, я добавил ссылку:

<Reference Include="My.Library, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>path/to/lib/My.Library.dll</HintPath>
</Reference>

И получил немного другую ошибку:

ошибка CS0012: тип IMyService определен в сборке, на которую нет ссылки. Вы должны добавить ссылку на сборку My.Library, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null.

Даже после обновления ссылки, чтобы она соответствовала точной строке из сообщения об ошибке, я все равно получил эту вторую ошибку.

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

  • A.dll - неподписанная сборка
  • B.dll - подписанная сборка; ссылки A.dll; компилируется нормально
  • C - ссылки A.dll и B.dll; отдельные ссылки ОК; получить ошибки выше при вызове метода в B, который возвращает тип из A

Я решил проблему, подписав сборку (A в моем примере выше). Я сделал это, сославшись на пакет StrongNamer NuGet.

person srk    schedule 28.01.2021