Где 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

вы можете попробовать ниже решения

  1. Перейдите в папку C:\Temp\msbuild 2. Там вы найдете папку с названием вашего проекта, и внутри этой папки вы найдете эти файлы, как показано на рисунке ниже
  2. Попробуйте удалить эти файлы и перестроить решение, которое может вам помочь

Ответ 5

На этот вопрос нет реального ответа. Оказывается, файл создается внутри папки DEBUG. Однако после удаления папки Debug я все еще получал ошибку. Значит, это ошибка VS?

Ответ 6

Попробуйте очистить все папки obj во всех ваших проектах и собрать заново. Это часть кода, который генерируется компилятором, иногда он не синхронизируется с самим представлением, даже Rebuild, который должен очистить все, не работает. Сделай это вручную. Надеюсь это поможет

Ответ 7

Недавно я столкнулся с той же проблемой,

Попробуйте следующий простой метод

  1. скопируйте ошибку и вставьте ее в блокнот. Там вы можете увидеть исходный путь первопричины файла ошибки, например 'YourProjectFolder'\obj\Debug\netcoreapp2.2\Razor\Views\'View Name'\index.g.cshtml.cs

  2. Найдите файл, если ошибка действительно повторяется, обратитесь к правильному пространству имен в файле index.cshtml, иначе удалите файл и перестройте его.

  3. Также проверьте, есть ли у вас дубликат файла и который был исключен из проекта. Если он существует, удалите файл тоже

  4. Теперь почистите и перестройте проект. (Вам может понадобиться очистить, закрыть VS, восстановить)