Global.asax中的“分析器错误消息:无法加载类型”

时间:2012-07-27 05:56:13

标签: asp.net asp.net-mvc-3

我正在处理MVC3项目并收到以下错误:

  

分析器错误消息:无法加载类型'GodsCreationTaxidermy.MvcApplication'。

来源错误:

  

第1行:<%@ Application Codebehind="Global.asax.cs" Inherits="GodsCreationTaxidermy.Core.MvcApplication" Language="C#" %>

我得到的错误是无法加载GodsCreationTaxidermy.Core.MvcApplication但在此屏幕截图中Core部分未显示错误:

Error Page Screenshot

有没有人对此错误有任何想法或解决方案?

36 个答案:

答案 0 :(得分:188)

检查项目输出路径(项目属性/构建)是否设置为bin bin\Releasebin\Debug

由于某种原因,IIS(VS开发服务器或本地IIS)始终访问bin目录中的库(并且不会查找子目录)

答案 1 :(得分:158)

您的本地Web服务器运行的代码与您实际使用的代码不同。确保您已停止调试,停止本地Web服务器,清理并重建Peter建议,仔细检查您的global.asax和global.asax.cs,然后重试。

如果这不起作用并且您使用的是本地IIS,请尝试在IIS管理器中删除该站点并手动重新创建它。

答案 2 :(得分:32)

尝试修改global.asax文件(简单地在某处添加空格)并重新运行。这将强制内置的Web服务器刷新并重新编译global.asax文件。

还要进行清理和重建 - 应该解决问题

答案 3 :(得分:26)

如果在生成global.asax后更改名称空间信息(项目或类级别),有时会发生这种情况。

右键单击Global.asax文件,然后选择&#34;打开方式&#34;然后选择&#34; XML(Text)Editor with Encoding&#34; (其他编辑也可以工作,但这是我使用的)。

然后编辑&#34;继承&#34; XML指令中的部分

  

&lt;%@ Application Codebehind =&#34; Global.asax.cs&#34; 继承=&#34; GodsCreationTaxidermy.MvcApplication&#34; 语言=&#34; C#&#34; %&gt;)

以便它与Application类的实际全名相匹配。就是这样。

另一个选择是从Global.asax.cs复制所有代码,然后删除并创建另一个Global.asax文件(然后将代码复制回Global.asax.cs)。

答案 4 :(得分:18)

我关闭并重新打开了visual studio,它确实有效。

答案 5 :(得分:16)

我不得不去BUILD - &gt; CONFIGURATION MANAGER和 - 嗯 - 选中我项目旁边的框以确保它实际构建完成。

答案 6 :(得分:4)

今天我遇到了这个问题,我花了一段时间才找到原因。

基本上,我的主要VS2015项目包括一个使用更高版本的.Net Framework构建的子项目。

奇怪的是,当您遇到此问题时,VS2015会很高兴地报告该解决方案已经构建好了,但是当您尝试运行该网站时,它只会给您带来误导性错误,表明您的Global.asax.cs文件错误

因此,如果您看到此错误,并且清洁/重建不起作用,请打开项目的References树,并检查感叹号。

enter image description here

另外,请在Output窗口中查看以下消息:

The primary reference "C:\Projects\Business Objects 4\bin\Release\BusinessObjects.dll" 
could not be resolved because it was built against 
the ".NETFramework,Version=v4.5" framework. 
This is a higher version than the currently targeted framework
".NETFramework,Version=v4.0".

当然,解决方案是右键单击主项目,选择顶部选项卡,&#34;应用程序&#34;,然后将Target Framework版本更改为与子项目匹配的更高版本。

令人讨厌的是Visual Studio 2015将让您完全构建和运行悄悄包含此问题的解决方案。它在惹麻烦..!

答案 7 :(得分:2)

我正在开发一个较旧的'基于文件夹'的ASP.NET网络项目(我讨厌) - 并发现这是我的修复:

创建一个App_Code文件夹(如果您还没有)

Global.asax.vb文件移至App_Code文件夹

Global.asax中的标记可以省略任何名称空间(至少对于这种样式的项目,afaik):

<%@ Application Codebehind="Global.asax.vb" Inherits="MyApp" Language="VB" %>

...其中“MyApp”是Global.asax.vb中定义的类的名称

答案 8 :(得分:2)

“构建 - &gt;配置管理器 - 请注意我的项目旁边的框,以确保它实际构建完毕。” 那个并转到Windows资源管理器中的项目文件夹,按下选项并取消选中“只读”复选框有帮助。

答案 9 :(得分:2)

当我有2个运行相同项目的Visual Studio实例时,我遇到同样的问题。所以我关闭了Visual Studio并只打开了一个实例,现在它工作正常!

答案 10 :(得分:2)

我必须报告我在这篇文章中尝试过至少4条建议。他们都没有工作。然而,我很高兴地报告说我通过从后面检索恢复了。只需从日志文件更新我的上一次代码更改。花了不到10分钟。花了3次阅读这篇文章并尝试其他建议。遗憾。

这是一个非常奇怪的错误。祝所有遇到这个gremlin的人好运。

答案 11 :(得分:2)

我刚刚在MVC5应用程序上遇到过这个问题,没有任何东西对我有用。这是在我尝试将SVN恢复为旧版本的项目之后发生的。

我必须删除 global.asax.cs,然后通过右键单击Project - &gt;添加一个新的。添加新项目 - &gt; Global.asax和THAT最终修复了它。

以为它可能对某人有帮助。

答案 12 :(得分:1)

是的,我阅读了所有答案。但是,如果您是我,并且已经拔出头发的所有残留物,请尝试检查\ bin文件夹。像大多数proj文件可能在XML元素PropertyGroup下分组的几种配置一样,然后我将'{bin \ Debug')的OutputPath值更改为删除'\ Debug'部分并重新构建。这会将文件放在\ bin文件夹中,以使Express IIS可以查找和加载内部版本。我想知道管理这些不同版本的正确方法是什么,以便本地调试部署能够找到并加载目标环境。

答案 13 :(得分:1)

清空bin文件夹。构建所有依赖类库并在主项目中引用它们,并构建完整的解决方案。

Source

答案 14 :(得分:1)

我也遇到了同样的问题。尽管遵循每一个答案它没有工作。 然后我将“Inherits = namespace.class ”更改为“Inherits = 完全限定的汇编名称”,即“Inherits = namespace.class,assemblyname,Version =, Culture =,PublicKeyToken = “ 希望它有所帮助。

答案 15 :(得分:1)

您还可以在IIS中检查您网站的属性。 (在IIS中,右键单击该站点,然后选择“属性”。)确保“物理路径”设置指向应用程序的正确路径,而不是某些其他应用程序。 (这为我修复了这个错误。)

答案 16 :(得分:1)

如果您在同一解决方案中运行Web和WebApi时意外忘记将VS解决方案设置为“多个启动项目”,也会发生这种情况。

您可以通过右键单击解决方案资源管理器中的解决方案并选择“属性”来检查这一点。然后查找“启动项目”。

答案 17 :(得分:0)

此问题我通过授予该文件夹的权限以及从IIS进行检查来解决。

当我在当地环境中测试时,我获得了所有人的许可。但在发布模式下,我认为我们只授予ASP.Net用户权限。

答案 18 :(得分:0)

我最近在Web应用程序中经历了这一点。 问题是一个nuget包带来了对以下内容的依赖: Microsoft.Net.Compiler和Microsoft.Code.Dom

它们支持多级编译器版本。.

那将我的应用程序转换为ASP.NET网站而不是Web应用程序..花了我一整天的时间来解决-2.5天!

我从Nuget Manager中删除了这些文件,删除了obj和bin目录中的文件-已关闭studio-然后重新打开并重建了项目。这样就解决了,但是

那是什么痛苦!!

希望我可以节省一些时间!

答案 19 :(得分:0)

对我来说,解决方案不是以上任何一种。 我必须删除(而不是重新创建)Global.asax和Global.asax.cs。 这些文件存在于文件夹中,即使在项目中未引用它们也是如此。 显然,构建仍然可以看到它们。 由于我将OWIN与Startup.cs一起使用,因此Global.asax文件已过时,删除它没有问题。

答案 20 :(得分:0)

从解决方案根目录中删除.vs目录。清洁。重建。

这个问题偶尔会驱使我疯狂,我不可避免地最终在这里通过答案进行分页。我怀疑有多种原因会产生此异常,这一次对我有用。

答案 21 :(得分:0)

我在这个问题上花了好几天。我终于通过这篇文章中的以下建议组合解决了这个问题。

  1. 将平台目标更改为任何CPU。我目前没有这个配置,所以我不得不去配置管理器并添加它。我专门为x64编译。仅这一点并没有解决错误。
  2. 将输出路径更改为bin\而不是bin\x64\Debug。在我更改平台目标之前,我已经尝试了好几次。除了因为格式无效而无法加载程序集的错误之外,它从未有所作为。
  3. 要清楚,我必须在开始工作之前完成这两项工作。我曾经多次尝试过它们,但是直到我做了两次都没有修好它。

    如果我将这些设置中的任何一个更改回原始设置,我会再次收到相同的错误,尽管已运行Clean Solution,并手动删除bin目录中的所有内容。

答案 22 :(得分:0)

对于我们来说,配置管理器将dll构建显示为'64'和'任何cpu'构建的混合。

将它们全部放到同一个版本中会修复它。

答案 23 :(得分:0)

我在这里完全尝试了一切,没有任何效果。我的项目是在VS 2013中。我已经升级到VS 2015并且在2015年创建了我的所有新应用程序,但是加载,编译,构建了所有我在2013年构建的旧应用程序。

我最终刚刚在2015年加载解决方案,并为我解决了这个问题。

答案 24 :(得分:0)

我发现更改项目上的命名空间,而不是在整个解决方案中进行重构是我的问题。检查项目属性并查看命名空间是什么,确保全面排列。

答案 25 :(得分:0)

我遇到此错误消息,最终发现错误消息具有误导性。在我的情况下,似乎在IIS中存在路由问题,导致从Web服务器上的另一个站点读取global.asax,从而产生错误。

在IIS中,我的网站绑定到http:* 80:webservices.local并包含一个名为MyAPI的应用程序。我在使用Web服务器的IP地址调用MyAPI应用程序时收到了可怕的消息。

为了成功调用我的应用程序,我必须在所有调用MyAPI应用程序的机器上为webservices.local添加主机文件条目。然后,我的所有请求都必须以http://webservices.local/MyAPI/作为前缀,以便正确路由。

答案 26 :(得分:0)

对于我的情况,Web程序集是GAC的一部分......所以在构建之后,它需要安装在GAC中并且它可以工作。

答案 27 :(得分:0)

我花了一天时间试图解决这个问题。

唯一有效的方法是删除.sln文件,创建一个新文件,然后逐个添加项目。

¯\ _(ツ)_ /¯ - 编程 - ¯\ _(ツ)_ /¯

答案 28 :(得分:0)

重建项目可以解决问题。

答案 29 :(得分:0)

我也遇到了同样的错误...检查你正确开发的应用程序的名称,即。分配的命名空间和程序集名称,并尝试物理更改为应用程序创建的文件夹的名称,所有这些应与文件global.asax中的上述命名空间中的名称相同

答案 30 :(得分:0)

问题在于我在项目中没有包含global.asax.cs。因为我正在将文件从.net 4.5复制到4.0,所以我没有注释掉4.0中不需要的行。因为它没有被包括在视觉工作室无论如何编译它没有问题。但是当我把它包括在内时,它突出了导致问题的线条。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
//using System.Web.Http;
using System.Web.Mvc;
//using System.Web.Optimization;
using System.Web.Routing;

namespace YourNameSpace
{
    public class WebApiApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            //GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            //BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

答案 31 :(得分:0)

我也遇到了同样的错误...检查虚拟目录的IIS配置,并确保属性 - ASP.NET - ASP.NET版本与项目属性 - 应用程序 - 目标框架相同。 (这为我修复了这个错误。)

答案 32 :(得分:0)

我的应用程序是在旧版本的VS中构建的,并且没有bin文件夹。我已经将它升级到更新的版本,并且有一个噩梦让它部署。我终于将这个错误追溯到项目&gt;属性&gt;应用。目标框架设定为2.0;在服务器上更改它以匹配IIS管理器/应用程序池为我解决了这个问题。

答案 33 :(得分:-1)

我用这种方式解决了这个问题: 只需修复Global.asax中的名称空间

答案 34 :(得分:-1)

无法加载项目错误 的 firstly Fix your errors and after rebuild project its working

答案 35 :(得分:-1)

我无处不在地面对VS 2017中的问题,整天花了100个解决方案来解决这些问题。然后,我采用了整个解决方案,并在安装了VS 2017的另一台计算机上启动了该解决方案。 终于完成了。然后在原始版本上重新安装了VS 2017,它也开始在该版本上运行。我强烈建议您在浪费大量时间进行调试之前,在另一台计算机上尝试解决方案,因为在我看来,这在VS 2017中是一个BUG,已经向VS TEAM报告过。希望这可以帮助任何陷入困境的人。干杯。