我正在尝试完成本教程(ASP.Net Core Razor Pages),但是(通常)在构建解决方案时,出现CS0234错误,指出文件'Index.g.cshtml.cd中缺少命名空间。 '...…。但是该文件在哪里? 我试过了 1.所有构建/清理/重建解决方案选项。 2.我已经重新启动了Visual Studio 3.我已删除DEBUG文件并重新启动VS和FINALLY 4.我已经重新启动了PC。 似乎可行的唯一解决方案是删除整个解决方案/项目,然后重新开始。
当然必须对此进行修复吗? 你能帮忙吗?
答案 0 :(得分:4)
我在这里遇到了与Visual Studio 2019 16.2.2相同的错误。对我来说,我已经更改了一些模型的名称,而不是在使用模型的实际视图中发现错误,而是在page.g.cshtml中而不是在page.cshtml中显示该错误。
因此,我的解决方案非常简单。如果错误是在page.g.cshtml中,请忽略g,转到视图page.cshtml,将模型名称更新为正确的名称,重建并消除错误。
答案 1 :(得分:3)
右键单击您的项目,然后在资源管理器中打开文件夹。然后搜索“ Index.g.cshtml.cs” 然后删除文件搜索结果
确保您的Index.cshtml引用正确的模型。
答案 2 :(得分:1)
这个问题实际上没有真正的答案。 事实证明,该文件是在DEBUG文件夹中创建的。 但是,删除Debug文件夹后,仍然出现错误。 所以这一定是VS错误吗?
答案 3 :(得分:0)
答案 4 :(得分:0)
尝试清除所有项目中的所有obj文件夹,然后重新构建。这是由编译器生成的代码的一部分,有时它不与视图本身同步,即使应清除所有内容的Rebuild也不起作用。手动执行。希望这会有所帮助
答案 5 :(得分:0)
如果错误表明xxx.g.cshtml.cs
中缺少using指令或名称空间,则通常意味着在直接查看中存在c#指令,编译器无法解析。
就我而言,我在局部视图中有以下陈述:
@inject UserManager<AppUser> UserManager
然后我继续将AppUser类从Web应用程序Namespace.Web.AppUser
重构为Namespace.Entities.AppUser
,这随后导致了该错误。
有多种解决方法。 最简单的方法是使用完全限定的类型名称空间:
@inject UserManager<Namespace.Entities.AppUser> UserManager
如果在另一个项目中,请不要忘记添加对另一个项目的引用。 或者:添加using语句:
@using Namespace.Entities;
或:将上述using语句添加到您的~\Views\_ViewStart.cshtml
中。这将使该类在所有视图中可用。
答案 6 :(得分:0)
最近我遇到了同样的问题,
尝试以下简单方法
复制错误并将其粘贴到记事本中。在那里,您可以看到错误文件的原始根本原因路径,例如'YourProjectFolder'\obj\Debug\netcoreapp2.2\Razor\Views\'View Name'\index.g.cshtml.cs
找到文件,如果错误仍然存在,请在index.cshtml文件中引用正确的命名空间,否则请删除文件并重建。
还要检查您是否有重复的文件,并且该文件已从项目中排除。如果存在,则也删除文件
现在清理并重建项目。 (您可能需要清理,关闭VS,然后重新构建)
答案 7 :(得分:0)
这是Microsoft.AspNetCore.Razor.Design软件包问题。
我在VS2017中尝试了2.2版本,该版本不支持此版本,并在obj目录中给出了“ .g.cshtml找不到”。
我解决了以下问题:
我将项目2.2的ASP.NET Core版本降级为2.1
在 startup.cs 中完成的更改:
问题已解决。
答案 8 :(得分:0)
如果您的解决方案因为那些 .g .cs 文件而一直失败,那可能是因为您忘记更新您可能已经移动的类的命名空间,在实际的 cshtml 文件中(例如通过注入所述命名空间).
这就是为我解决问题的原因: https://til.secretgeek.net/.net_core_MVC/error_in_g_cs.html