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

gkd*_*kdm 105 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#" %>
Run Code Online (Sandbox Code Playgroud)

但是当我构建时,我得到一个错误陈述 -

无法加载"MyNamespace.Global"类型.

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

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

注意2:使用csc从vs提示符编译时,编译正常

sta*_*ona 161

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

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

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

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

  • 另外:尝试关闭并重新打开VS. 如果您使用内置调试服务器,那么它可能正在运行不同的网站.打开/关闭将重新注册localhost端口. (13认同)
  • 将项目的输出路径更改为bin文件夹解决了该问题.谢谢你救了我的一天! (3认同)

Phi*_*ove 17

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


小智 14

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

我把这个类更新为一个partial类,它运行正常.

public partial class Global : System.Web.HttpApplication
Run Code Online (Sandbox Code Playgroud)


Man*_*tal 9

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

  • 同样适合我.确保关闭所有打开的Visual Studio. (2认同)

Joh*_*ren 5

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

基本上,我有两个分支需要工作,有一个主分支,一个暂存分支和一个发布分支。当我将分支切换到暂存分支时,我注意到它正在使用相同的端口地址配置,因此我选择对其进行更改。然后,我收到另一个警告,该保留与另一个已配置的应用程序冲突。IIS Express服务器对此很敏感,无论出于何种原因,它都会对配置产生影响。

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

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


小智 5

  1. 右键单击Project Solution,然后选择Batch Build。
  2. 然后选择您的项目名称和清理并重建。

在VS 2015中对我来说效果很好。现在我可以使用Global事件了。我的Global.asax档案有这行

<%@ Application Language="C#" CodeBehind="~/App_Code/Global.asax.cs" Inherits="Global" %>
Run Code Online (Sandbox Code Playgroud)

然后我将类文件Global.asax.cs放在AppCode文件夹中

public partial class Global : HttpApplication
{
    public Global()
    {
        //
        // TODO: Add constructor logic here
        //
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望这个能帮上忙