一尘不染

“无法加载类型[名称空间] .Global”使我感到悲伤

c#

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

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

但是,当我构建时,出现错误提示:

无法加载类型’MyNamespace.Global’。

这似乎是因为MyNamespace命名空间(在文件Global.asax.cs后面的代码中定义)在Global.asax文件中没有被编译器看到(在R#智能中没有显示。)。原来这是一个很难破解的螺母……任何帮助将不胜感激!

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

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


阅读 216

收藏
2020-05-19

共1个答案

一尘不染

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

如果将x86指定为构建平台,Visual Studio将自动将bin / x86 /
Debug分配为该项目的输出目录。这对于其他项目类型完全有效,但ASP.NET希望将程序集输出到Bin文件夹的Web应用程序除外。

在我的情况下,我发现它们同时被输出到(Bin和Bin / x86 /
Debug)中,除了某些dll(而且莫名其妙地最重要的dll是您的Web应用程序dll)从Bin中丢失了夹。

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

2020-05-19