Где index.g.cshtml
Я пытаюсь проработать это руководство (ASP.Net Core Razor Pages), но (часто), когда я строю решение, я получаю ошибку CS0234, в которой говорится, что в файле 'Index.g.cshtml.cd' отсутствует пространство имен...….но, где этот файл существует? Я попробовал 1. Все варианты сборки/очистки/перестройки решения. 2. Я перезапустил Visual Studio 3. Я удалил файлы DEBUG и перезапустил VS и, наконец, 4. Я перезапустил свой ПК. ЕДИНСТВЕННОЕ решение, которое, кажется, работает, состоит в том, чтобы удалить все решение/проект и начать заново.
Конечно, должно быть исправление для этого? Вы можете помочь?
Ответы
Ответ 1
Если из-за ошибки в директиве xxx.g.cshtml.cs
отсутствует директива using или пространство имен, это обычно означает, что непосредственно в представлении есть директива (.cshtml
или .vbhtml
), которую компилятор не может разрешить.
В моем случае у меня было следующее утверждение в частичном представлении:
@inject UserManager<AppUser> UserManager
Затем я перестроил класс AppUser из веб-приложения Namespace.Web.AppUser
в Namespace.Entities.AppUser
, который затем вызвал эту ошибку.
Есть разные способы решить эту проблему. Самый простой способ - использовать полностью определенное пространство имен типа:
@inject UserManager<Namespace.Entities.AppUser> UserManager
И не забудьте добавить ссылку на другой проект, если он есть в другом проекте. Или: добавьте оператор использования:
@using Namespace.Entities;
Или: добавьте приведенное выше выражение в ваш ~\Views\_ViewStart.cshtml
. Это сделает этот класс доступным во всех представлениях.
Ответ 2
щелкните правой кнопкой мыши свой проект и откройте папку в проводнике. Затем найдите "Index.g.cshtml.cs" Затем удалите результаты поиска файлов
Убедитесь, что ваш Index.cshtml ссылается на правильную модель.
Ответ 3
Я приземлился здесь с теми же ошибками с Visual Studio 2019 16.2.2. Для меня я изменил название некоторых моделей и вместо того, чтобы уловить ошибку в реальных представлениях, которые использовали модели, ошибка показалась в page.g.cshtml, а не в page.cshtml.
Итак, мое решение было довольно простым. Если ошибка была в page.g.cshtml, игнорируйте g, перейдите в представление page.cshtml, обновите имя модели до правильного имени, перестройте и ошибки исчезли.
Ответ 4
вы можете попробовать ниже решения
- Перейдите в папку C:\Temp\msbuild 2. Там вы найдете папку с названием вашего проекта, и внутри этой папки вы найдете эти файлы, как показано на рисунке ниже
- Попробуйте удалить эти файлы и перестроить решение, которое может вам помочь
Ответ 5
На этот вопрос нет реального ответа. Оказывается, файл создается внутри папки DEBUG. Однако после удаления папки Debug я все еще получал ошибку. Значит, это ошибка VS?
Ответ 6
Попробуйте очистить все папки obj во всех ваших проектах и собрать заново. Это часть кода, который генерируется компилятором, иногда он не синхронизируется с самим представлением, даже Rebuild, который должен очистить все, не работает. Сделай это вручную. Надеюсь это поможет
Ответ 7
Недавно я столкнулся с той же проблемой,
Попробуйте следующий простой метод
скопируйте ошибку и вставьте ее в блокнот. Там вы можете увидеть исходный путь первопричины файла ошибки, например 'YourProjectFolder'\obj\Debug\netcoreapp2.2\Razor\Views\'View Name'\index.g.cshtml.cs
Найдите файл, если ошибка действительно повторяется, обратитесь к правильному пространству имен в файле index.cshtml, иначе удалите файл и перестройте его.
Также проверьте, есть ли у вас дубликат файла и который был исключен из проекта. Если он существует, удалите файл тоже
Теперь почистите и перестройте проект. (Вам может понадобиться очистить, закрыть VS, восстановить)