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 在哪里的主要内容,如果未能解决你的问题,请参考以下文章
C# mvc 本人是新手 写了一个很简单的程序 运行报错404 大神看看是哪里错了?感谢!
不确定在哪里放置 Scripts.Render for JQuery