“无法加载类型[Namespace] .Global”让我感到悲伤

时间:2010-01-05 11:39:49

标签: c# asp.net webforms namespaces global-asax

在我的.Net 2.0 Asp.net WebForms应用程序中,我的Global.asax包含以下代码:

<%@ Application CodeBehind="Global.asax.cs" Inherits="MyNamespace.Global" Language="C#" %>

然而,当我构建时,我得到一个错误陈述 -

  

无法加载“MyNamespace.Global”类型。

这似乎是因为Global.asax文件中的编译器看不到MyNamespace命名空间(在文件Global.asax.cs后面的代码中定义)(在R#intellisence中没有显示..)。 事实证明这是一个非常难以破解的......任何帮助都将受到赞赏!

注意:Global.asax和Global.asax.cs位于同一文件夹中。

注意2:当使用csc从vs提示符编译时,它会编译o.k.

34 个答案:

答案 0 :(得分:161)

我遇到的导致此问题的一种情况是,当您通过“构建配置”为构建指定平台时。

如果指定x86作为构建平台,visual studio将自动将bin / x86 / Debug指定为此项目的输出目录。这对于其他项目类型非常有效,但ASP.NET期望将程序集输出到Bin文件夹的Web应用程序除外。

我在我的情况中发现它们被输出到两个(Bin和Bin / x86 / Debug),除了一些dll,并且莫名其妙地是最重要的一个是你的web应用程序dll,正在丢失从Bin文件夹。

这显然导致了编译问题,因此导致“无法加载类型全局”异常。清理解决方案并删除程序集对后续构建没有任何影响。我的解决方案是将Web应用程序的项目设置中的输出路径更改为Bin(而不是bin / x86 / Debug)。

答案 1 :(得分:17)

您是否更改了项目的命名空间?我偶尔会看到这种情况,我在Project Properties对话框中更改了命名空间,但Visual Studio没有更改现有代码文件中的namespace声明。

答案 2 :(得分:14)

我是asp .net开发的新手,我遇到了类似的问题。

我将该类更新为partial类,并且工作正常。

public partial class Global : System.Web.HttpApplication

答案 3 :(得分:9)

我重新启动了Visual Studio,错误消失了!

答案 4 :(得分:4)

  1. 右键单击Project Solution并选择Batch Build。
  2. 然后选择您的项目名称并清理和重建。
  3. 在VS 2015中为我工作。现在我可以使用全球活动。我的Global.asax文件有此行

    <%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>
    

    我在Global.asax.cs文件夹中创建类似

    的类文件AppCode
    public partial class Global : HttpApplication
    {
        public Global()
        {
            //
            // TODO: Add constructor logic here
            //
        }
    }
    

    我希望这会有所帮助

答案 5 :(得分:4)

这是另一本书。当您从同一端口号启动多个Web应用程序时,似乎会发生这种情况。

基本上,我有几个分支,我有一个主分支和一个临时分支和一个发布分支。当我将分支切换到临时分支时,我注意到它使用相同的端口地址配置,因此我选择更改它。然后,我收到另一个警告,即此保留与另一个已配置的应用程IIS Express服务器对此非常敏感,无论出于何种原因,它都会对配置产生影响。

通过简单地选择第三个未受影响的端口,此问题就消失了,因为它然后将端口映射到新的目录映射(我的分支在磁盘上的位置不同)。我注意到了这一点,因为我试图更改Global.asax指向的类型名称,但即使重新启动服务器后类型名称也没有改变,所以很明显,我正在更改的代码没有反映在IIS Express部署中。 / p>

因此,在此之前失去太多睡眠之前,请尝试更改当前用于运行Web项目的IIS端口号。

答案 6 :(得分:3)

检查Global.asax.cs的Build Action。它应该设置为Compile。

在“解决方案资源管理器”中,右键单击“Global.asax.cs”并转到“属性”。在“属性”窗格中,设置“构建操作”(调试时)。

默认情况下,VS 2008似乎并不总是正确添加.asax(.cs)文件。

答案 7 :(得分:2)

在我的情况下,它与项目的Web站点/ Web应用程序类型有关。我们最近搬到了MVC,不得不将其改为Web应用程序。

因此,解决方案很简单:在解决方案资源管理器中选择您的网站并从解决方案中删除它,然后右键单击解决方案并选择添加 - &gt;现有项目(非网站),重新编译网站。

答案 8 :(得分:2)

旧帖子但我在尝试从网站项目转换为Web应用程序项目时出现此错误。

按照此Link的说明操作。我仍然遇到了global.asax错误,但我所做的就是删除它并通过右键单击visual studio中的项目并选择添加新项目重新添加它。添加global.asax文件并且有效。

答案 9 :(得分:2)

我有一个类似的错误

<clear/>

标记为

的孩子(第一个孩子)
<assemblies>
Web.config 中的

标记。我已经在我的web.config中插入了标签,试图阻止在IIS中“默认网站”下部署的应用程序中的配置继承。

答案 10 :(得分:2)

不幸的是,这些都不适合我。我发现的修复程序更具体,特别是在本地计算机上进行调试。还不幸的是,它并没有像我希望的那样真正解决问题,但是如果你的智慧结束了,这可能会让你再次跑步。

TL; DR:在项目属性中,在“Web”选项卡的“服务器”下,选择“使用本地IIS Web服务器”。地址,

http://localhost/MyApp" 

已经填充(我有IIS7,.NET 4.0)。最初选择的是“使用Visual Studio开发服务器”,其虚拟路径为“/”

对我来说真正令人费解的是,没有其他任何工作,我经历了我可以在SO上找到的所有建议,但没有任何方法可行。奇怪的是,当我添加一个类似于旧的.net 2.0(我认为)项目中添加的现有ascx文件时,错误是(看似自我上次查看以来已经过了几个月)。这将允许从应用程序内进行自定义用户管理。很长一段时间它都很漂亮,直到我尝试添加这个新文件。在添加它并看到错误之后,我立即恢复了所有更改,但Global.ascx错误不会消失,甚至没有吹掉整个项目并从源代码控制中重新获取最新信息。

答案 11 :(得分:2)

我已将我的解决方案从VS2003转换为VS2010,并且在转换Web应用程序项目时遇到了问题。

我遇到了完全相同的问题,但没有一个答案适合我。

对我有用的是:

  • 右键单击解决方案并选择Configuration Manager
  • 查看“Active solution configuration”下拉列表中的每个配置。
  • 勾选“构建”复选框,在构建中包含Web应用程序。

似乎我在转换过程中遇到的问题由于某种原因从构建中删除了Web应用程序项目。

希望这个答案可以帮助其他有同样问题的人......

答案 12 :(得分:1)

当我遇到这个问题时,我最近尝试了这里提到的所有内容,但无济于事。在撕掉我的头发后,我决定尝试删除我的整个代码库(是的,非常绝望!),然后从我的代码库重新下载所有内容。在这样做之后,一切都工作得很好。

似乎是一个极端的解决方案,但我只是想把它包含在这里,因为之前在这个帖子中没有提到过。

(请注意,我遇到此问题的另一次是,Global.asax是从一个需要在主机上注册的组件继承的。这是遗漏的,因此我遇到了同样的问题)。

TL; DR; 如果此帖子中的所有答案都不适合您,请尝试删除然后重新下载整个代码库!

答案 13 :(得分:1)

就我而言,我已将Global.asax添加到WCF项目中进行实验,但决定将其删除。我从解决方案资源管理器中删除了它,但因为它仍然在文件夹中,管道仍然找到它并导致此错误。

我从文件系统中删除了Global.ASAX和GLobal.asax.cs,确实解决了错误。

答案 14 :(得分:1)

我遇到过这个问题几次,在每种情况下我都在重建计算机或切换到新计算机。我的第一步(除了更新机器和安装Visual Studio)是从Git中取出我的项目并测试它们。

我每次都遇到此错误,因为我在编译之前尝试访问我的本地代码。你看,我有Git和Subversion设置忽略我的bin / build文件夹,所以在从我的存储库中拉出后我忘了运行一个从Nuget中提取所需包的构建(因为我有Git / SVN也忽略了这些)并创建了实际运行我的应用程序所需的DLL。

我怀疑这会解决大多数人的问题,但我没有在潜在解决方案列表中看到它,所以我想我会添加它。

答案 15 :(得分:1)

在我的情况下,这是因为我的目标处理器(x64)我将其更改为x86清理项目,重新启动VS(2012)并重建项目;然后它消失了。

答案 16 :(得分:1)

更改装配的GUID。我发现,这解决了许多问题。

答案 17 :(得分:1)

这项工作对我来说: 第一件事:似乎无论你对视觉工作室说什么,ide总是看文件:bin(对于网络应用程序而且在我的情况下当然)所以,即使我对visual studio说一个特定的加载路径文件,ide继续寻找错误的路径。所以我在:构建/配置管理器中将输出类型更改为:Release(以前我清理解决方案,甚至手动)因此,当创建文件.dll时,我手动移动到项目/解决方案下的“bin”文件夹夹。希望这会有所帮助!!

答案 18 :(得分:1)

我遇到类似的问题,我在项目中收到此错误。

“Could not load type [Namespace].Global
Error in Line 1   etc etc

花了一些时间后,我怀疑一个函数可能会在一个类中发生错误.later评论该特定函数我的问题得到解决。

我不知道为什么Visual Studio在调试时没有给我这个特定的错误。但是由于类文件中的一些错误,可能会发生此错误。

答案 19 :(得分:1)

如果您重建或更改项目并移动旧项目,请务必检查全局的继承块。在我的例子中,以前的项目/解决方案被命名为intranet,我将其重新创建为Intranet,但是当我移动文件时,它不喜欢小写(duh)。只需对文件名称进行一般性的了解。

答案 20 :(得分:0)

我们在 PROD 服务器上运行了一个 .net 应用程序。当我们将 bin 文件夹复制到最新版本的服务器时,我们遇到了同样的错误。我们无法理解发生了什么。它在本地和 TEST 服务器上运行良好。经过一番挖掘,我注意到一些上传的文件的大小为 0 字节。

结果是 FTP 客户端 (Filezilla) 损坏了一些上传的文件,这可以理解,这让 .net 认为某些库位于其他地方或丢失了。

我们尝试了另一个 FTP 客户端并重新上传了所有文件。这似乎成功了。

答案 21 :(得分:0)

您需要将输出路径设置为bin \

答案 22 :(得分:0)

这个进入开发游戏已经20年了,这个栗子继续困扰着我多个项目。

因此,今天,在针对另一个项目再次遇到相同问题的同时,我决定进行进一步调查,我相信这与Bin文件夹的位置有关……或更具体地说,与bin文件夹的输出路径有关。 / p>

对于我来说,对于配置为通过IIS运行/调试的基于服务的简单Web应用程序,它将输出路径从 bin \ debug 更改为 bin \ 可以解决

  

项目>属性>构建>输出路径

衷心希望这会有所帮助。

答案 23 :(得分:0)

听起来很傻。这就是我做的..

我的项目针对的是4.6.1版本。 将目标版本更改为4.6.2。建造它。 删除了obj&amp; bin文件夹。 &安培;再次将版本更改为4.6.1。宾果!!

答案 24 :(得分:0)

当我不小心将“Chrome”设置为默认的调试浏览器时,我遇到了这个问题。当我将其设置回“IE”时,问题就消失了。我不知道为什么......

编辑:我准备删除这个答案,因为我不确定,但后来又遇到了问题。我转而使用Chrome浏览器,然后又回到IE浏览器停止了!是什么赋予了!?

答案 25 :(得分:0)

只想加我的两分钱。我收到同样的错误,我尝试了所有的建议无济于事。我的情况可能有所不同?

原来,一个自动生成的&#34; AssemblyInfo.cs&#34;文件有一些无关的空间,这阻止我启动Web应用程序(通过调试)。这是文件的样子:

[assembly: AssemblyTitle("WebApplication2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("

            ")]
[assembly: AssemblyProduct("WebApplication2")]
[assembly: AssemblyCopyright("Copyright © 

             2017")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

在杀死AssemblyCompany和AssemblyCopyright中的空格后,我终于能够构建并启动该项目了。

在以下环境中观察: --Visual Studio 2017社区版15.3.0 --Win 7 x64企业版 - 新项目&gt; Visual C#&gt;网络&gt; ASP.NET Web应用程序&gt;网络表单

答案 26 :(得分:0)

那么在我的VS 2017中,轻量级解决方案负载导致了这个问题。我禁用它&amp;重新启动VS然后重新构建我的解决方案&amp;问题消失了。

答案 27 :(得分:0)

我尝试重建解决方案并清除ASP.NET临时文件但没有成功 但运行 IISRESET 后,错误消失了。

更新:1个月后我又遇到了同样的问题。我注意到MyWebsite.DLL存在于bin文件夹中,但在临时ASP.NET文件(C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Temporary ASP.NET Files)中不存在。 我已经尝试了一些事情,这是在这个和"Parser Error Message: Could not load type" in Global.asax问题上建议的(我实际上忘记了我自己的答案),但错误仅在 IISRESET

之后再次消失

答案 28 :(得分:0)

如果您使用的是Visual Studio,您可能正在尝试在发布模式下执行该应用程序,请尝试将其更改为调试模式。

答案 29 :(得分:0)

仅在prod服务器上部署时出现此问题。在我的其他环境中,它可以工作......我只是删除了bin文件夹中的内容,然后重新发布,之后就可以了。

答案 30 :(得分:0)

我被同样的问题弄糊涂了。我试图移除和global.asax(在添加之前关闭VS2010)。清理项目/解决方案,检查Web应用程序配置中的任何更改以及其他在SO线程中为其他人工作的内容。我终于清理了解决方案,删除了bin / obj文件夹并停止了所有正在运行的VS2010开发服务器,然后我还原了所有更改并发现应用程序再次运行。我重复了同样的事情,现在工作正常。

再次发生,这次this解决方案对我有用。

答案 31 :(得分:0)

在我的情况下,IISExpress指向与IIS相同的端口 解决它去

C:\Users\Your-User-Name\Documents\IISExpress\config\applicationhost.config

并搜索该端口,您会找到需要删除或评论的<site>...</site>标记

答案 32 :(得分:0)

我不得不从磁盘中删除(复制)未包含在项目中的文件。看起来重复是由重命名失败引起的。文件名不同,但代码相同。

删除所有我能够扫描的oof。*文件后。

  • foo.aspx
  • foo.aspx.cs
  • foo.aspx.designer.cs
  • oof.aspx
  • oof.aspx.cs
  • oof.aspx.designer.cs

答案 33 :(得分:0)

转到解决方案属性下的配置管理器。然后确保所有项目并构建,这不会是一个问题。