首页 文章

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

提问于
浏览
101

在我的.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.

30 回答

  • 0

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

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

    我在我的情况中发现的是它们被输出到两个(Bin和Bin / x86 / Debug),除了一些dll,以及令人费解的最重要的一个是你的web应用程序dll,从Bin中丢失夹 .

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

  • 2

    您是否更改了项目的命名空间?我在项目属性对话框中更改了命名空间,但Visual Studio未更改现有代码文件中的 namespace 声明 .

  • 1

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

    我将该类更新为 partial 类,它运行正常 .

    public partial class Global : System.Web.HttpApplication
    
  • 0

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

  • 1

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

  • 2

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

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

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

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

  • 1
    • 右键单击Project Solution并选择Batch Build .

    • 然后选择您的项目名称并清理并重建 .

    在VS 2015中适合我 . 现在我可以使用全球活动 . 我的 Global.asax 文件有这行

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

    我创建了 AppCode 文件夹中的类文件 Global.asax.cs

    public partial class Global : HttpApplication
    {
        public Global()
        {
            //
            // TODO: Add constructor logic here
            //
        }
    }
    

    我希望这个能帮上忙

  • 2

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

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

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

  • 0

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

    因此,解决方案很简单:在解决方案资源管理器中选择您的网站并将其从解决方案中删除,然后右键单击解决方案并选择添加 - >现有项目( not Web Site ),重新编译网站 .

  • 0

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

    按照Link上的说明进行操作 . 我仍然遇到global.asax错误,但我所做的只是删除它并通过右键单击visual studio中的项目并选择添加新项目重新添加它 . 添加global.asax文件,它工作正常 .

  • 9

    我有一个类似的错误

    <clear/>
    

    标记为孩子(第一个孩子)的

    <assemblies>
    

    我的 Web.config 中的标签 . 我已经在我的web.config中插入了标签,试图阻止在IIS中'Default Web Site'下部署的应用程序中的配置继承 .

  • 16

    我已经将我的解决方案从VS2003转换为VS2010并且在转换网络时遇到了问题应用项目 .

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

    对我有用的是:

    • 右键单击解决方案,然后选择配置管理器

    • 查看'Active solution configuration'下拉列表中的每个配置 .

    • 勾选'Build'复选框,在构建中包含Web应用程序 .

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

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

  • 1

    如果您重建或更改项目并从旧文件移过文件,请确保检查全局的继承块 . 就我而言,以前的项目/解决方案被命名为intranet,我将其重新创建为Intranet,但是当我移动文件时,它不喜欢小写(duh) . 只需对文件名称进行一般性查看 .

  • 1

    更改程序集的GUID . 我发现,这解决了许多问题 .

  • 14

    我有一个类似的问题,我在一个项目上收到这个错误 .

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

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

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

  • 0

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

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

    http://localhost/MyApp"
    

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

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

  • 0

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

  • 1

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

    似乎是一个极端的解决方案,但只是想我在这里包含它,因为它在此线程中没有被提及过 .

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

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

  • 0

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

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

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

  • 155

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

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

  • 2

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

  • 1

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

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

    • foo.aspx

    • foo.aspx.cs

    • foo.aspx.designer.cs

    • oof.aspx

    • oof.aspx.cs

    • oof.aspx.designer.cs

  • 0

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

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

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

  • 4

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

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

  • 0

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

  • 2

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

  • 0

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

    Update :1个月后我又遇到了同样的问题 . 我__80468_t存在于临时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 之后再次消失

  • 0

    好吧在我的VS 2017中,轻量级解决方案负载导致了这个问题 . 我禁用它并重新启动VS然后重新构建我的解决方案并且问题消失了 .

  • 4

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

    事实证明,自动生成的“AssemblyInfo.cs”文件有一些无关的空间,这使我无法启动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企业版 - 新项目> Visual C#> Web> ASP.NET Web应用程序> Web窗体

  • 1

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


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

相关问题