错误:«无法加载类型MvcApplication»


240

我收到错误

无法加载类型MvcApplication

当我尝试运行我的网站时。

如何纠正?


35
我有一天在构建服务器上随机收到此错误。进行手动重建可以解决该问题。
扎克

1
在构建选项卡上的项目属性中设置输出路径
silasdavis,2012年

8
删除global.asax文件并添加一个新文件,一切都会好起来的。
DotNetGeek

4
事实证明,未在活动配置中选择新项目进行构建。
JGeerWM 2015年

4
如果您最近添加了项目,或者您最近更改了发布配置(即从AnyCPU切换到x64),则可能是在运行项目时未构建项目。转到“构建”->“配置管理器”,然后检查“构建”列是否已选中复选框。我现在刚遇到这个问题。您还将注意到,在运行应用程序时,断点是清晰的圆圈。我认为这是对支持32位的处理器体系结构的.net 4.5.1进行默认构建的结果。如果您检查x64,这只是一个问题
David Bridge

Answers:


115

听起来很愚蠢,尝试了所有操作,但它没有起作用,最后重新启动了VS2012,使其再次起作用。


1
LMFAO,在尝试了这里提到的所有内容之后,也为我工作了,但没有成功!谢谢,+ 1!
Yustme,2014年

这里同样的问题。该错误在合并后出现,直到VS2012重新启动后该错误才会消失。
StuartQ 2014年

1
对我来说,可能发生的事情是该端口被第二个未编译项目的Visual Studio实例使用。
克莱伦哈特

也为我工作。真丢人
PAWAN RAJ Shakya

5年后的VS2017,这仍然是解决方案。:/
Sagiv bg

105

-对我来说,解决方法是更改​​“构建”选项卡中的输出路径。我将输出路径更改为bin\,错误消失了。

-另一个解决方法可能是您设置了错误的启动项目。


8
这也是我们的问题。先前已将其设置为类似Debug \ x86 \ bin
t3rse 2012年

4
哈!这是我两年来第二次遇到此问题,这是第一次,是最佳答案,第二次是该答案。
Ben Lesh

1
谢谢!这也咬了我。我已经更改了平台以清除一些警告,并且输出路径在我不知道的情况下发生了变化。
camainc

6
这对我来说是正确的答案...关于Visual Stupido为什么采用这种方式的任何想法吗?
andreapier 2014年

1
是的,就是这样。更改为bin可使一切按预期工作。@andreapier:是的,VS2012似乎也表现出这种愚蠢的方式。有人尽快修复它!:)
现在,他绝对不能被任命。

82

我做了同样的错误,尽管做了这里提到的所有事情,其他地方却无济于事。原来,我从项目的先前版本复制了global.asax.cs的源代码,而该版本具有不同的名称。因此,namespace Test应该已经namespace Test.WebUI。当然这是一个愚蠢的错误,并且为编写此文件而感到尴尬!但是写信希望其他人也可能犯同样的错误,这也可能导致他去检查这个琐碎的方面。


谢谢Vipul 我刚刚做过同样的事情,并认为我因此失去了很多工作。只是更改名称空间名称已保存了我的培根
xiecs 2011年

2
我只是做了同样的事情。我在文本编辑器中打开了Global.asax并解决了名称空间问题。谢谢
凯文·卡里姆

6
我只是做了同样的事情。为了向其他人详细说明:最初,我有一个自动创建的名为“ MvcApplication1”的测试项目。然后,我将名称空间“ MvcApplication”的全局替换为“ MyTest”。在记事本中的Global.asax中,我需要更改为Inherits =“ MyTest.MvcApplication”
PabloInNZ 2014年

如果有什么办法可以给黄金,我会
shanabus

53

只需在您的解决方案上进行手动构建即可。

如果您使用的是本地IIS,请尝试在IIS管理器中删除网站注册,然后手动重新创建。


这获得者我,我会的下降,从回购的网站,设置IIS,但是在IIS中从未做过的构建
安东尼主要

31

[摘自问题]

如果出现此错误:“无法加载类型MvcApplication”,请查看项目的输出路径,并确保将其设置为“ bin \”。问题是,如果文件不在默认位置,则AspNetCompiler找不到文件。

更改输出文件夹的另一个副作用是您将无法调试代码,并且会显示一条消息,指出找不到组装信息。


1
通常在不同的构建配置之间进行分隔时,这似乎有些奇怪。
nicodemus13年

默认情况下,它是分开的,但是很多人将它们更改为一个文件夹,因此对于引用输出的不同项目(安装程序等),发布和调试位于同一位置。
2014年

我想知道这个问题是否是IIS Express特有的。无论如何,我想出来的原因是因为它只是拧紧了我们的一个新启动器:我已更改binbin\Debugbin\Release但是旧文件仍在我的bin文件夹中,所以我没有发现任何问题。当然,如果您进行干净签出并生成这些文件,那么这些文件就不存在了,因此它会崩溃。
巴特阅读

15

我有同样的问题,并通过以下步骤解决了

  1. 转到项目属性
  2. 在“构建”选项卡上,将输出路径设置为“ bin \”

1
非常感谢您这样做,它解决了我在设置断点时遇到的问题!
克里斯,

那对我有用。我自己发现的,但还是要感谢。
2014年

哇靠!这样可以节省一天。
ske

14

啊,这很烦人。

停电后出现此错误,我返回了我的项目。

我尝试重新启动VS。我尝试将输出路径设置为\ bin。我检查了我的名字空间。

但是对我有用的是重建解决方案。

重建解决方案!!!


13

我的解决方案:因为我造成了问题!我已经在Global.asax.cs中更改了名称空间

您还需要在Global.asax中更改Inherits属性值。


3
我也有这个问题。我希望Visual Studio可以重构标记的继承属性以及类中的名称空间。
csharpforevermore2011年

同样在这里。重命名名称空间时,请确保您按shift-alt-F10键,或右键单击以重命名,它将为您更新所有实例。
罗布

这对我有用,但是很难找到在哪里实现该解决方案。我做了“全部查找”来访问Global.asax文件的原因,因为当您在Visual Studio编辑器中双击Global.asax时,您会获得Global.asax.cs文件,该文件实际上是.asax文件后面的代码。注意.cs扩展名。因此:CTRL-F并搜索Global.asax(不带.cs)并更改继承以匹配您的命名空间。
GerardV '16

9

检查global.asax中提供的信息背后的代码。他们应该正确地指向后面代码中的类。

示例global.asax:

<%@ Application Codebehind="Global.asax.cs" Inherits="MyApplicationNamespace.MyMvcApplication" Language="C#" %>

后面的示例代码:

   namespace MyApplicationNamespace
    {
        public class MyMvcApplication : System.Web.HttpApplication
        {
            protected void Application_Start( )
            {
                AreaRegistration.RegisterAllAreas( );
                FilterConfig.RegisterGlobalFilters( GlobalFilters.Filters );
                RouteConfig.RegisterRoutes( RouteTable.Routes );
                BundleConfig.RegisterBundles( BundleTable.Bundles );
            }
        }
    }


5

如果您的IIS Express已/正在使用相同的端口分配托管旧/不同的项目,则在Visual Studio中运行项目时也可能发生这种情况。

要解决此问题,您可以更改此项目的端口分配或关闭IIS Express。


5

如果您托管在IIS Express中,并且在两个不同的位置打开了项目,则可能会看到此错误。

解决方法是转到,Project/Properties/Web/Servers然后单击Create Virtual Directory


4

对我来说,解决方案是右键单击Mvc项目,选择属性,然后单击创建虚拟目录。

弹出一个消息框,指出该项目已映射到错误的文件夹(它显示了另一个TFS项目的文件夹。它提供了将其映射回正确文件夹的选项。


1
谢谢您的提示,对我来说,原因是我最近搬迁了tfs。我需要取消映射解决方案文件夹,然后再次对其进行映射,以使该应用程序正常工作!
adhie 2015年

4

我已经bin/在构建选项卡中了。我从该项目的另一个副本中获得了global.asax,但是没有成功。

最终对我有用的解决方案是删除该bin/文件夹并创建一个具有相同名称的新空文件夹。


1
这不能为问题提供答案。要批评或要求作者澄清,请在其帖子下方发表评论-您随时可以对自己的帖子发表评论,一旦您拥有足够的声誉,就可以在任何帖子中发表评论
JLRishe 2014年

@brasofilo我可能打错了电话,但是由于原始问题中严重缺乏信息,因此这很可能不是OP问题的解决方法,并且此答案足够短,可以将其添加为注释。另一方面,最初的问题是很久以前发布的,在这里有很多“这对我有用”的答案,因此这是一个艰难的选择。这个问题及其答案可能需要清除。
JLRishe 2014年

@JLRishe,是的,这是一个问答环节。这个答案甚至可能是第二高的答案的重复,但是我不确定。我将标记Q,要求最小为10rep。
brasofilo 2014年

4

我知道已经有很多解决方案,但是我想我只想说为我解决的办法。

我的配置设置为“调试”。将其更改为Release对我有用。


2
将其更改为发行版,并且可以正常工作...将其更改回调试,并且可以继续工作...谢谢。
Paul Zahra 2015年



3

我陷入了这个。我已经阅读并测试了之前给出的所有可能的解决方案。检查构建路径,构建,重建,清理,重新启动IIS和VS2015,重新安装所有nuget软件包,一一编译它们,等等,...

我突然想起VS在系统文件夹中保留了一些ASP临时文件……我想我应该尝试一下,毕竟这不会更糟。所以我清空了:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files

而且所有人都在工作...奇怪的是这个问题有如此不同的可能解决方案...


3

在过去的十年中,我已经看过很多次了,只是又有一次。有许多问题导致相同的错误。

原因之一是文件重命名。如果您使用的是.cshtml文件,请检查这些文件中以及Views \ web.config文件中的所有名称空间。对于Web表单,重命名Default.aspx(相关的.cs和设计器文件会自动重命名)。后面的代码会更改,但标记中的Inherits行不会更改。手动更改。仔细检查设计器页面。有时(VS2005-8?)设计器页面无法反映名称空间的更改。在2010年还没有看到这个。

另一个问题是,它们都可以在VS或本地PC上运行,而在部署时却不能。这可能是因为部署环境的结构不同。例如,如果将代码放置在应用程序文件夹下的虚拟目录中,则会发生该错误,但是如果您创建一个新的应用程序文件夹并将所有文件都放置在该目录中,则不会发生该错误。我不明白这一点,因为我已经为新的子文件夹/虚拟文件夹设置了相同的权限(或者,我认为),并且(我认为)应用程序池对于给定应用程序文件夹中的所有内容应该都相同。

就我而言,我还有一个bin文件夹,其中包含从IIS服务器上的其他程序集更新的程序集。同样,确保将它们运行在单独的应用程序文件夹中会导致成功。

高温超导


2

每当我保存一个动态编译的文件(ascx,aspx等)时,都会遇到此问题。我等待约8-10秒,然后消失。令人讨厌的烦人。

我以为这可能是IIS Express问题,所以我尝试在内置dev服务器中保存文件后仍能收到它。我正在运行MVC应用程序,我也在使用T4MVC,也许这是一个因素...


2

我在Visual Studio的开发环境中遇到了一个令人沮丧的错误,事实证明原因很愚蠢。简而言之,如果您在解决方案中有多个Web项目/站点:请确保您尝试访问该网站的端口与在Project Properties-> Web中配置的端口相同。

就我而言,该错误是由于在解决方案中的项目分配了另一个端口时,我使用其他端口访问网站(在浏览器中)而引起的。为了进一步说明,我在解决方案中有两个网站项目Website1(Visual Studio分配了ISS中的端口8001)和Website2(Visual Studio分配了ISS中的端口8101)。因此,即使我正在构建Website1,我仍试图使用locahost:8101访问该网站。

现在我终于意识到了这个问题,我看到@StingyJack的评论也解决了类似的问题。



2

我再次遇到此错误,以上都不对我有用。我不得不删除以下节点.csproj的文件:<VisualStudio>....</VisualStudio>。重新加载VS,它的工作原理。

仅供参考,VS能够重新创建该节点,然后我通过IIS在IIS中重新创建了网站,并且运行良好。

希望这会帮助某人。


1

确保您不必像文件->打开网站那样使用文件->打开项目来打开MVC项目。


1

对我有用的是重新启动Visual Studio。

我尝试手动重建,执行清理和重建以及删除bin文件夹,所有这些都不起作用。我的输出路径已设置为bin \


我进行了解决方案级的重建,但是我发现项目的bin文件夹为空。我仅在项目上进行了构建,然后突然有了一个已填充的bin文件夹。我启动了这个项目,它成功了。
MrBoJangles


1

如果您更改名称空间,则可能经常发生这种情况。返回名称空间的名称,就像以前一样,这应该使它起作用!


1

在某些情况下,默认情况下不会将您创建的新项目设置为生成。如果右键单击解决方案,请选择Properties,然后选择Configuration Properties|。Configuration节点,并确保您的项目在该Build列下具有选中标记。在正常情况下,我发现默认情况下会发生这种情况。在其他情况下(我碰巧有一个稍微复杂的Web Api / Xamarin Android和iOS / Mvc 5解决方案,表现出这种行为)没有复选标记。

这与其他答案有关-如果Web Projet的程序集不可用,则会出现此错误。但这可能是常见的情况,尤其是因为您实际上在编译解决方案时-只是没有构建项目。


1

我收到此错误的原因是我的版本控制已设置为忽略我的bin文件夹。非常愚蠢,但也许其他人会受益。


1
您是否要忽略bin文件夹以及obj和其他已构建但不属于源代码的内容?
MrBoJangles

通常,是的。但是在此特定站点上,这是将项目推送到服务器的唯一方法。我可能应该使我的回答更加笼统。
布伦特·瓦格纳

我完全可以得到像这样的特殊情况。
MrBoJangles

1

我遇到了这个问题,我看到了各种各样的答案,但是什么都没有被接受。我有点发现,在尝试运行之前仅构建网站即可解决我的问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.