Имя исполняемого файла Visual Studio не существует в текущем контексте

Я вызываю статический метод в классе, например

Foo.bar()

Visual studio intellisense распознает Foo и автозаполнения для меня (это подчеркивает Foo и все, что работает, прекрасно). Все выглядит нормально, пока я не прихожу к созданию проекта, и он выдает ошибку, говоря, что имя Foo не существует в текущем контексте.

Я использую этот вызов статического метода в других файлах, поэтому я знаю, что класс в порядке. Ситуация слишком велика для отправки кода, поэтому я в основном ищу причины, чтобы начать изучать, что приведет к тому, что intellisense будет нормально функционировать, но получат ошибки при компиляции следующим образом.

Ответ 1

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

У вас есть 2 варианта, о которых я могу думать

  1. Найдите свой код для Foo и увидите, что он используется для чего-то другого, кроме статического класса.

  2. Полностью квалифицируйте вызов Foo.bar(). MyApplication.This.That.Foo.bar();

Сделайте это в таком порядке... лучше изящно разрешить проблему, чтобы вы могли просто вызвать Foo.bar(), поскольку это более MyApplication.This.That.Foo.bar(); и поддерживается, чем MyApplication.This.That.Foo.bar(); повсюду!

Ответ 2

Я видел эту ошибку, вызванную различными версиями.NET framework в разных проектах. Библиотека классов, которую я построил, составляла 4,5, а приложение было 4.0, но единственной ошибкой, которую она давала, были ошибки пространства имен. Изменив версию фреймворка в библиотеке классов и перестроив ее, затем приложение устранило ошибку.

Ответ 3

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

Ответ 4

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

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

Ответ 5

Старый поток, который я знаю, но я столкнулся с этой проблемой при обращении к статическому методу из проекта единичного тестирования. Intellisense сказал, что этот метод существует, но когда я попытался построить/запустить тест (в режиме Debug), я получил ошибку 'name не существует в текущем контексте'. Чтобы исправить это, мне пришлось перестроить проект, содержащий ссылочный статический метод в конфигурации Debug (он только ранее был встроен в конфигурацию Release) - после этого тест был построен и работал нормально.

Ответ 6

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

Ответ 7

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

Ответ 8

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

Ответ 9

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

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

Ответ 10

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

Ответ 11

Мой был немного более запутанным решением. Проект A, на которые ссылаются проекты B и C: в обеих ссылках были копии Local to true и обе выпущенные сборки с одинаковыми именами. При создании проекта референции выходные сборки из проектов B и C были скопированы, а одна из них была перезаписана, потому что они имели одно и то же имя. Затем VS искал ссылки в каталоге сборки и только нашел сборку, которая "выиграла".

Ответ 12

Мое решение этой проблемы, которое происходит время от времени:

  1. Найдите класс, который дает вам проблемы в обозревателе решений и "Исключить из проекта",
  2. Перестройте эту сборку (позвоните ей "A")
  3. Проект, который использовал файл ("B"), попросит вас "перезагрузить" проект, подождите.
  4. Добавьте файл обратно в сборку A, которую вы только что удалили, и перестройте
  5. Теперь перезагрузите проект B

Затем файл был найден в VS, и все было хорошо.

Ответ 13

Я удалил папку obj. Восстановите его, и теперь все в порядке.

Ответ 14

Предложение, опубликованное aherocalledFrog, сработало из-за ошибки, с которой я столкнулся. Различные целевые рамки между проектами. Я бы сказал его ответ, но моя репутация слишком низкая.

Ответ 15

Настройте связанный файл. Если код ошибки в Default.aspx.cs, вам нужно изменить верхнюю строку в файле Default.aspx как Default.aspx ниже:

Замените "CodeFile=" на "CodeBehind"

Надеюсь, это поможет.

-Thanks, Thai_FUV