index.g.cshtml 在哪里

Posted

技术标签:

【中文标题】index.g.cshtml 在哪里【英文标题】:Where is index.g.cshtml 【发布时间】:2019-02-27 00:04:26 【问题描述】:

我正在尝试完成本教程 (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

然后我继续将 Web 应用程序 Namespace.Web.AppUser 中的 AppUser 类重构为 Namespace.Entities.AppUser,然后导致该错误。

有不同的方法来解决这个问题。 最简单的方法是使用完全限定的类型命名空间:

@inject UserManager<Namespace.Entities.AppUser> UserManager

并且不要忘记添加对另一个项目的引用,如果它在另一个项目中。 或者:添加 using 语句:

@using Namespace.Entities;

或者:将上面的 using 语句添加到您的 ~\Views\_ViewStart.cshtml。这将使该类在所有视图中可用。

【讨论】:

也可能是强类型视图:@model Namespace.Entity @ZackPeterson,是的 - 绝对。真正的关键是,您的视图中直接出现了编译时错误,并且没有可以检查的 .g.cshtml 文件。 您好,我做了所有这些(底部添加了使用 namespace.entities),但我仍然收到此错误,但仅在我使用 build+IntelliSense 时出现。当我将它单独切换到 Build 或 IntelliSense 时,它​​不会出现。我知道这是一个旧答案,但我希望你能看到这个。它只给了我 obj 文件夹中调试文件的错误,而不是常规视图文件 @ZackPeterson,这解决了我的问题。我已更改项目的模型名称以从 Blazor 页面切换到 MVC 样式项目。我想使用原来的命名空间。 Views 文件夹有一个 @Model 指令,它仍在使用旧的命名空间,并且重命名足以解决问题。【参考方案2】:

我在使用 Visual Studio 2019 16.2.2 时遇到了同样的错误。对我来说,我更改了一些模型的名称,而不是在使用模型的实际视图中发现错误,错误显示在 page.g.cshtml 而不是 page.cshtml 中。

所以,我的解决方案相当简单。如果错误在 page.g.cshtml 中,忽略 g,转到查看 page.cshtml,将模型名称更新为正确的名称,重新构建,错误消失。

【讨论】:

【参考方案3】:

右键单击您的项目并在资源管理器中打开文件夹。然后搜索“Index.g.cshtml.cs” 然后删除文件搜索结果

确保您的 Index.cshtml 引用了正确的模型。

【讨论】:

【参考方案4】:

最近我也遇到了同样的问题,

试试下面的简单方法

    复制错误并将其粘贴到记事本中。在那里您可以看到错误文件的原始根本原因路径,例如'YourProjectFolder'\obj\Debug\netcoreapp2.2\Razor\Views\'View Name'\index.g.cshtml.cs

    找到文件,如果错误仍然存​​在,请在 index.cshtml 文件中引用正确的命名空间,否则删除文件并重建。

    还要检查您是否有任何重复的文件,并且该文件已从项目中排除。如果存在也删除该文件

    现在清理并重建项目。 (你可能需要清理、关闭VS、重建)

【讨论】:

欢迎来到 SO!请编辑您的问题并详细说明(1)为什么您的食谱有效,以及(2)您最后一点的确切含义。我猜它涉及npm cache clean 或其他东西 @B--rian 我的最后一点不是指向 npm cache clean,我的意思是项目清理和重建选项。此外,正如 ImConfused 在下面回答的那样,这不可能是 VS 错误。 ImConfused 可能已经清楚地查看了错误详细信息。 VS 清楚地告诉你错误。【参考方案5】:

如果您的解决方案由于这些 .g .cs 文件而一直失败,可能是因为您忘记在实际的 cshtml 文件中更新您可能已移动的类的命名空间(例如通过注入所述命名空间)。

这就是为我解决问题的方法: https://til.secretgeek.net/.net_core_MVC/error_in_g_cs.html

【讨论】:

【参考方案6】:

你可以试试下面的解决方案

    转到 C:\Temp\msbuild 2.在那里你会找到你的项目名称的文件夹,在这些文件夹中你会找到这些文件,如下图 尝试删除这些文件并重建可能对您有帮助的解决方案

【讨论】:

谢谢....但我在 C:\ 上找不到 Temp 文件夹。我有应该隐藏的“未隐藏”文件夹。 C:\Windows 中有一个 Temp 文件夹,但它不包含您在此处显示的任何文件。 工作忙,抱歉回复晚了。您可以尝试以下操作 1. 在我们的系统中搜索 %temp% 或直接在您的系统上搜索“Index.g.cshtml.cd” 2.或者双击在 Visual Studio 中打开文件的错误,右键单击并点击打开文件位置【参考方案7】:

这个问题实际上没有真正的答案。 事实证明,该文件是在 DEBUG 文件夹中创建的。 但是,删除 Debug 文件夹后,我仍然收到错误消息。 所以一定是VS的bug?

【讨论】:

【参考方案8】:

尝试清理所有项目中的所有 obj 文件夹并重新构建。这是编译器生成的代码的一部分,有时它与视图本身不同步,即使是应该清理所有内容的 Rebuild 也不起作用。手动进行。希望这会有所帮助

【讨论】:

【参考方案9】:

这是 Microsoft.AspNetCore.Razor.Design 包问题。

我尝试在我的 VS2017 中使用 2.2 版本,它不支持此功能并在 obj 目录中给出“.g.cshtml not found”。

我解决了如下问题:

我将项目的 ASP.NET Core 版本 2.2 降级为 2.1

startup.cs 中所做的更改:

    CompatibilityVersion.Version_2_2 到 CompatibilityVersion.Version_2_1 将 Nuget 包的所有 dll 更改为 2_1 支持 dll SDK 确保其 2.1.x

问题已解决。

【讨论】:

以上是关于index.g.cshtml 在哪里的主要内容,如果未能解决你的问题,请参考以下文章

使用 CSHTML 进行自动完成的最简单方法是啥

C# mvc 本人是新手 写了一个很简单的程序 运行报错404 大神看看是哪里错了?感谢!

不确定在哪里放置 Scripts.Render for JQuery

在哪里放置小部件的脚本引用(部分页面)

.net MVC3 写代码 cshtml 语法不变色显示,全是黑色的,求指教,把VS2010,mvc3重装了也不行

在 index.cshtml 页面上创建.cshtml?