[c#] Получение «типа или имени пространства имен не удалось найти», но все выглядит нормально?



13 Answers

При создании решения я получал ту же ошибку (тип или пространство имен «не удалось найти»). Ниже я увидел предупреждение о том, что «ссылка не может быть решена» и убедиться, что «сборка существует на диске».

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

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

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

Чтобы исправить эту проблему, я добавил библиотеку в зависимость от проекта, который ее использовал.

Сделать это:

  1. Я щелкнул правой кнопкой мыши мое решение в обозревателе решений и выбрал «Свойства»,
  2. Затем в «Common Properties» я выбрал «Project Dependencies».
  3. Затем в раскрывающемся меню «Проекты» я выбрал проект, который полагался на библиотеку, и
  4. Проверьте флажок рядом с библиотекой, найденной в разделе «Зависит от»,

Это гарантирует, что проект библиотеки будет создан первым.

Question

Я получаю:

имя типа или имени не найдено

ошибка для приложения WPF C # в VS2010. Эта область кода компилировалась хорошо, но внезапно я получаю эту ошибку. Я попытался удалить ссылку на проект и инструкцию using , закрыть VS2010 и перезапустить, но все же у меня есть эта проблема.

Любые идеи, почему это может произойти, когда мне кажется, что я делаю запись re Reference & using statement?

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




Вы также можете попытаться устранить код, с которым, по вашему мнению , возникли проблемы, и посмотреть, компилируется ли он без ссылок на этот код. Если нет, исправьте вещи, пока они не скомпилируются снова, а затем снова заработайте свой подозрительный код проблемы. Иногда я получаю странные ошибки в отношении классов или методов, которые, как я знаю, верны, когда компилятору не нравится что-то другое. Как только я исправить то, что он действительно повесил трубку, эти «фантомные» ошибки исчезают.




У меня была аналогичная проблема: компилятор не смог обнаружить папку внутри одного и того же проекта , поэтому при использовании директивы, связанной с этой папкой, возникла ошибка. В моем случае проблема возникла из переименования папки . Несмотря на то, что я обновил пространство имен всех классов внутри этой папки, информация о проекте каким-то образом не обновилась. Я пробовал все: удаление файла .suo и папки bin и obj, очистка решения, перезагрузка проекта - ничего не помогло. Я решил проблему, удалив папку и классы внутри, создав новую папку и создав новые классы в этой новой папке (простое перемещение классов внутри новой папки не помогло).

PS: В моем случае я работал над веб-приложением, но эта проблема может возникать в разных типах проектов.




Удалите сборку из папки GAC (C: \ WINDOWS \ assembly - выберите ваш assebly и щелкните правой кнопкой мыши и удалите). потому что решение сохраняет refference с помощью guid, и если этот guid находится в GAC, он будет продолжать использовать версию GAC для компиляции.




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




Для тех, кто получает эту ошибку, когда они пытаются опубликовать свой сайт в Azure, ни одно из перспективных решений выше не помогло мне. Я был в одной лодке - мое решение было построено отлично. В итоге мне пришлось

  1. Удалите все пакеты nuget в моем решении.
  2. Закройте и снова откройте мое решение.
  3. Повторно добавьте все пакеты nuget.

Немного болезненно, но это был единственный способ опубликовать мой сайт на Azure.




[Facepalm] Моя проблема заключалась в том, что я добавил зависимость в C ++, чтобы делать что-то.

Перейдите в проект, который не будет создан, откройте папку «Ссылки» в обозревателе решений и проверьте, указана ли ваша зависимость.

Если нет, вы можете «Добавить ссылку» и выбрать зависимость на вкладке «Проекты».

Бум Шанкар.




В моем случае, я считаю, что ссылка в VisualStudio имеет треугольник и восклицательный знак, как это изображение,

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




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

Он отлично работал в моей обычной рабочей области, и я смог открыть файл SLN внутри папки агента локально, и все скомпилировано нормально.

Соответствующая DLL была сохранена в проекте как Lib/MyDLL.DLL и ссылки с этим в файле csproj:

<Reference Include="MYDLL, Version=2009.0.0.0, Culture=neutral, PublicKeyToken=b734e31dca085caa">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>Lib\MYDLL.dll</HintPath>
</Reference>

Оказалось, что буквально просто не находил файл, несмотря на подсказку. Я думаю, возможно, msbuild смотрел относительно файла SLN вместо файла проекта.

В любом случае, если сообщение, которое вы получаете, не Could not resolve this reference. Could not locate the assembly Could not resolve this reference. Could not locate the assembly затем убедитесь, что DLL находится в доступном месте для msbuild.

Я как-то обманул и нашел сообщение, в котором говорилось Considered "Reference\bin\xxx.dll" и просто скопировал туда Considered "Reference\bin\xxx.dll" .




У меня была такая же проблема, как обсуждалось: VS 2017 подчеркивает класс в ссылочном проекте как ошибку, но решение строит нормально и даже intellisense работает.

Вот как мне удалось решить эту проблему:

  1. Выгрузить указанный проект
  2. Откройте файл .proj в VS (я искал дубликаты, как кто-то предложил здесь)
  3. Перезагрузите проект еще раз (я не изменил или даже не сохранил файл proj, поскольку у меня не было дубликатов)



Более сложная ситуация, с которой я столкнулся, заключалась в следующем: Project one нацелен на полную версию 4.0 с пакетом Microsoft.Bcl.Async . Два проекта предназначены для полной версии 4.0, но не будут компилироваться при ссылке на один проект.

Как только я установил пакет Async NuGet во второй проект, он скомпилирован.




Это событие происходит в Visual Studio 2017.

  1. Перезапустить Visual Studio
  2. Чистый проект, который не удается построить.
  3. Перестройте проект.



Я знаю, что это ногами мертвой лошади, но у меня была эта ошибка и рамки, где все хорошо. Моя проблема заключалась в основном в том, что интерфейс не найден, но он строит и имеет доступ к нему просто отлично. Поэтому я подумал: «Почему именно этот интерфейс, когда другие работают нормально?»

В итоге оказалось, что я действительно обращался к сервису с использованием WCF с интерфейсом конечной точки, который использовал Entity Version 6, а остальные проекты использовали версию 5. Вместо использования NuGet я просто скопировал пакеты nuget в локальный репозиторий для повторного использования и перечислили их по-разному.

например EntityFramework6.dll или EntityFramework.dll .

Затем я добавил ссылки на проект клиента и poof, моя ошибка исчезла. Я понимаю, что это крайний случай, поскольку большинство людей не будут смешивать версии Entity Framework.




В моем случае, добавив dll в качестве ссылки, имя type or namespace name could not be found ошибкой. Однако копирование и вставка файла dll непосредственно в папку bin разрешило ошибку.

Не знаю, почему это сработало.




Related