После обновления до Visual Studio 2019 на прошлой неделе у меня возникла знакомая ошибка "Тип или имя пространства имен 'X' не существует в пространстве имен 'Y' (у вас отсутствует ссылка на сборку?)". Это происходит только в редакторе Razor в Visual Studio 2019 и относится к пространству имен текущего проекта . Я испробовал все знакомые решения, найденные по нескольким другим вопросам StackOverflow, включая очистку и перестройку, очистку всех кешей, удаление файла .suo и других файлов, созданных VS, удаление плагинов, изменение целевой платформы (и изменение ее обратно), обеспечение ссылки на пространство имен в Views / web.config и удаление ссылок на библиотеки, предназначенные для старых версий .NET Framework. Это очень распространенное сообщение об ошибке, но, насколько я могу судить, ни один из других вопросов, обсуждающих эту ошибку, не говорит о том, что Visual Studio сообщает, что не может найти пространство имен текущего проекта.
На скриншотах показан пример. Красная волнистая линия под Web
в Tasks.Web.Models
показывает ошибку при обнаружении класса, показанную на втором скриншоте. Проект называется Tasks.Web. Пространство имен по умолчанию одинаково, и каждый файл класса в проекте имеет пространство имен, которое начинается с Tasks.Web
.
Этот проект является проектом ASP.NET MVC 5, созданным в 2015 году, и до сих пор успешно обновлялся в VS2015 и VS2017, даже не сталкиваясь с этой проблемой. Проект все еще строится и работает; единственный реальный недостаток в том, что Intellisense продолжает показывать мне эту ошибку, и она появляется в списке ошибок как минимум один раз для каждого открытого файла представления. Мне достаточно легко продолжить работу с этой проблемой или вернуться к VS2017, но я бы лучше решил ее и, возможно, понял, почему это происходит, если это не просто ошибка. Похоже, это происходит в каждом представлении Razor, ссылающемся на класс модели, определенный в этом проекте, независимо от того, использую ли я полный путь в операторе @model
или пытаюсь использовать вместо него оператор @using
. Есть идеи?
Приложение : Изменение пространства имен на WebHack
с помощью рефактора R # Rename имеет следующие эффекты:
1. Успешно изменяет пространство имен во всех *.cs
файлах и *.cshtml
файлах (показывая, что рефакторинг может обнаружить, что пространства имен совпадают).
2. Никаких изменений в поведении инструмента. Красный волнистый участок все еще там, показывая ту же ошибку для обновленного пространства имен. ПРИМЕЧАНИЕ : удален R # после выполнения этого теста без изменений.
Приложение 2 : обновлено до Visual Studio 2019, обновление 3 (16.0.3). Без изменений. Вытащил чистую копию исходного кода в новый каталог, запустил «Load Dependencies» в Visual Studio, построенном решении. Без изменений; показывает, что та же самая ошибка "не существует" в "Web" также присутствует в этой новой копии решения.
Приложение 3 : Изолировано для Visual Studio путем фактического удаления всех расширений. Удалены ссылки на Resharper в тексте вопроса.