Файл Global.asax.cs не перекомпилируется - файл действителен - PullRequest
2 голосов
/ 14 октября 2010

Недавно я произвел рефакторинг некоторого кода, и метод, от которого зависел исходный файл Global.asax.cs, больше не был статическим.Когда я внес изменения в свой код Global.asax.cs для решения проблемы компиляции, VisualStudio Development Server все еще сообщал о старой проблеме.Чтобы еще больше сбить с толку, он сообщает о старой проблеме с новым исходным кодом.

Когда я запускаю сервер разработки, я получаю сообщение об ошибке с сообщением:

Метод не найден:'System.Security.Principal.IPrincipal Example.Records.AuthenticationManager.GetPrincipleForUserName (System.String);

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

Таким образом, DevelopmentServer видит старый скомпилированный код, а VisualStudio - новый код.Я не могу установить точку останова, потому что VisualStudio сообщает мне, что исходный код отличается от исходной версии.

Как я могу заставить DevelopmentServer увидеть новый работающий код?

1 Ответ

2 голосов
/ 15 октября 2010

С тех пор я нашел реальную причину, по которой это происходит, и это также влияет на проблему «Символы не загружены для этого класса» при попытке отладки приложения. Проблема связана с путем к DLL. Если ваше веб-приложение является частью более крупного решения, и кто-то редактирует конфигурацию решения, Visual Studio изменит путь вывода сборки.

По умолчанию выходной путь сборки для отладки находится в папке ~ \ bin \. Это сделано для того, чтобы Кассини мог найти библиотеки DLL и файлы PDB. Когда кто-то редактирует основную конфигурацию и меняет архитектуру, VisualStudio автоматически обновит целевой выходной каталог до «~ \ bin {Architecture} \ Debug». Вы должны вручную войти в свойства вашего проекта и установить выходной каталог «bin \» для повторной отладки. Как только вы это сделаете, он снова заработает.

--- Оригинальный ответ:

Единственное, что я мог сделать, чтобы это заработало, - это создать новый проект и скопировать весь мой код. Это не очень хороший ответ, но это лучшее, что я смог придумать. Тот же самый точный код бежал как чемпион. Просматривая файл проекта построчно, я не смог найти ничего, что могло бы объяснить поведение, которое я видел.

...