在temp目录中自动生成“App_Web ********。cs”文件,导致生成错误

时间:2014-01-28 22:16:31

标签: asp.net-mvc visual-studio-2013

所以这已经困扰了我一段时间,但有时候在我的Visual Studio 2013 ASP.NET MVC4项目中,我将删除一个未使用的ViewModel类,并在下一个看起来像这样的编译时会出错(对于我刚刚删除的ViewModel名为“MostRecentMemberListing.cs”:

  

错误9类型或命名空间名称“MostRecentMemberListing”没有   存在于名称空间“MembershipCenter.ViewModels”中(你是否遗漏了)   集会   参考?)c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary   ASP.NET   Files \ temp \ 3e932790 \ 42b7ff67 \ App_Web_cvlbfbci.1.cs 29 MembershipCenter

如果我双击VS的“错误列表”面板中的错误,它将打开位于此路径中的文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\temp\3e932790\42b7ff67,这是一个系统生成的视图文件(?),其类名为_Page_Views_Home_MostRecentMember_cshtml

我尝试删除奇怪的文件本身,以及其包含文件夹和ITS包含文件夹,一直到tempTemporary ASP.NET Files文件夹的路径。但每次我重新编译我的项目时,所有这些文件夹和文件都会直接重新创建,我得到相同的编译错误。

我在编译期间通过项目文件中的<MvcBuildViews>true</MvcBuildViews>构建我的视图。如果我关闭此设置,我可以构建+运行正常,但当我将其转回true时,构建错误将返回。

之前有没有人遇到此错误?它与IIS有关吗?我正在运行本地IIS,而不是IIS Express。

8 个答案:

答案 0 :(得分:57)

这与本地或其他方式的IIS无关。您看到的那个长而奇怪的文件名是编译器在编译时为视图指定的名称。您所描述的所有内容都告诉您,您的某个视图中存在编译错误。它可能是不匹配的HTML标签,不良的模型属性调用等。

查看您的错误消息,您在/Views/Home/MostRecentMember.cshtml中有一个视图。此外,您似乎确实错过了模型声明的命名空间,或者为您尝试发送的模型声明了错误的命名空间。

删除奇怪命名的文件将不会执行任何操作,因为重建时,它将返回,很可能使用不同的名称。

答案 1 :(得分:8)

我今天再次拥有此功能,Visual Studio中必定存在一个错误,导致它尝试编译views文件夹中的所有cshtml文件。即使他们不是项目的一部分。您最好的选择是单击解决方案资源管理器中的显示所有文件,找到流氓文件并将其删除。

答案 2 :(得分:1)

对于其他人。它也可能忘记了等号
<%ThankyouMessage%>而非 <%=ThankyouMessage%>

参考 <%$, <%@, <%=, <%# ... what's the deal?

答案 3 :(得分:1)

此错误表示您的视图使用的是无法找到的模型。 当您在不更新视图的情况下重构/删除模型时,通常会发生这种情况!

在受影响的视图中修复对模型的引用应解决此问题。

否则,请尝试清理ASP.Net临时目录:C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Temporary ASP.NET Files

答案 4 :(得分:1)

enter image description here

我遇到了一个愚蠢的问题,如果您注意到QuestionAnswer文件夹是项目中未包含的文件夹的图标,并且其中的文件引用的模型不存在或与文件处于相同状态,则排除项目。

我必须选择我的项目并在解决方案资源管理器上显示所有文件,如下图所示 enter image description here

然后我删除了文件夹,文件和模型,这些文件,模型也从项目中排除,从而导致生成错误。希望这些图片对您有所帮助,并祝您编码愉快。

答案 5 :(得分:0)

我有相同的issuse,发现问题是C#敏感的命名空间。视图文件.cshtml中的命名空间是上层“@model IEnumerable”,类的命名空间是Camel格式“Abc.Def.Class”。

我将.cshtml中的命名空间更改为Camel格式并运行。

答案 6 :(得分:0)

更改Web应用程序的命名空间后,我遇到了同样的错误,我也重命名了解决方案和Web项目。 经过许多技巧和技巧后,此解决方案终于对我有用。

  1. 我检查了应用程序App_start文件,以找到对旧名称空间的任何引用,但未找到任何内容
  2. 然后我搜索了web.config和Global.asax,但没有成功。
  3. 最后,我在解决方案中“视图”文件夹下列出的web.config中进行了搜索,在其中找到了旧名称空间的引用。将其更改为 NewNamespace 并运行该应用程序。这次它起作用了。

             

答案 7 :(得分:0)

如果另一个人面临此问题,请确保您在web.config文件中没有命名空间为空

enter image description here

那些名称空间会在编译时自动添加以查看,如果该名称空间不存在,则会引发错误。

在重命名名称空间时经常会发生这种情况。