Ошибка «Класс не содержит определения метода», но метод существует - PullRequest
2 голосов
/ 25 июля 2011

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

«MyNamespace.MyBaseClass» не содержит определения «MyMethod» и нет метода расширения MyMethod, принимающего первый аргумент типа `MyMamespace.MyBaseClass 'может быть найден (вы пропускаете использование директива или ссылка на сборку?)

Когда я выбираю метод в строке вызова и выполняю [Перейти к определению], Visual Studio находит объявление метода в ожидаемом месте.

Когда имя метода изменяется на MyMethod_ABC и выбирается [Генерировать заглушку метода], метод MyMethod_ABC создается рядом с MyMethod с той же сигнатурой, только имена параметров различаются.

Проект не может быть построен. Кто-то может увидеть что-то не так?

Ответы [ 8 ]

4 голосов
/ 29 июня 2013

Для тех, кто ищет решение для этого, как я был:

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

3 голосов
/ 08 апреля 2013

У меня недавно была точно такая же проблема. Решение состояло в том, чтобы удалить ссылку на рассматриваемый проект и снова добавить тот же ... Кто знает, работает как шарм:)

2 голосов
/ 12 сентября 2016

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

Сначала я обновил номер версии сборки в AssemblyInfo.cs, который можно найти в разделе свойств поврежденных сборок в проводнике решений в Visual Studio.

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

2 голосов
/ 25 июля 2011

Возможность ссылки на метод и «Перейти к определению» не связаны на 100%. Хотя они используют одну и ту же инфраструктуру, они различаются в нескольких ключевых областях. Вообще говоря, «Перейти к определению» будет успешнее во многих случаях, чем компиляция.

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

  • Отсутствует DLL / Ссылка на проект
  • Ошибки разрешения перегрузки

Учитывая конкретную ошибку, которую вы получаете, я бы начал с отсутствующих ссылок на DLL / Project

0 голосов
/ 22 августа 2016

У меня тоже была эта проблема. Метод был там, и его можно найти с помощью «Перейти к определению». Я изменил имя определения (и ссылку) и получил ту же ошибку с новым именем. Я перепечатал контрольную линию, сразу над ней, затем удалил старую контрольную линию, и вот - это сработало. Не знаю почему, но по какой-то причине VS редко зацикливается на одной строке кода, и единственное решение заключается в том, чтобы перепечатать строку и удалить оригинал. Странный. Ну, эта же проблема вернулась. Я заметил, что «отсутствующий» метод не будет отображаться в списке методов, соответствующих тому, что я начинаю печатать. Другие методы из того же класса будут. Это поведение не изменится, даже если я переименую метод. Поэтому я решил, что «слепая точка» соотносится с внешней формой конкретного метода, а не только с названием. Поэтому я скопировал другой метод из того же класса, который был «виден» в среде IDE. Я переименовал его, удалил внутренний код, затем вставил во внутренний код из «невидимого» метода. Теперь это работает последовательно. Настоящая "вуаля".

0 голосов
/ 25 марта 2013

Я получил ту же ошибку после перемещения class.cs из каталога HtmlHelpers в каталог Filters с интерфейсом VS после начала редактирования кода. Строить, перестраивать, чистить не помогает.

Но как, если вы не начнете редактировать код? Перетащите class.cs из каталога HtmlHelper и перейдите в каталог Filters в моем случае. Затем нажмите F5, и никаких ошибок вы не получите. Затем закройте VS, удалите каталог obj с dll, cache, tmp, DEBUG ... в нем. Запустите VS. Нажмите F5 и снова нет ошибок.

Закройте VS, удалите каталог Obj и перезапустите Windows. Class.cs в каталоге Filters указывает на неправильный каталог HtmlHelpers в коде. Нажмите F5 и снова никаких ошибок.

0 голосов
/ 26 июля 2011

Сегодня, при включении компьютера и открытии Visual Studio, проблема исчезла, были ошибки на других классах, но в правом коде нет красного индикатора подчеркивания. Теперь решение работает отлично. Спасибо всем, кто посмотрел на меня. Это визуальная ошибка студии? до свидания.

0 голосов
/ 25 июля 2011

Если ваш код содержит ссылки на кросс-проекты, проверьте, включены ли ссылки на проекты, и проверьте порядок сборки.

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