在我的.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提示符下编译时,编译正常
我遇到的导致此问题的一种情况是,当您通过“构建配置”指定构建平台时。
如果将x86指定为构建平台,Visual Studio将自动将bin / x86 / Debug分配为该项目的输出目录。这对于其他项目类型完全有效,但ASP.NET希望将程序集输出到Bin文件夹的Web应用程序除外。
在我的情况下,我发现它们同时被输出到(Bin和Bin / x86 / Debug)中,除了某些dll(而且莫名其妙地最重要的dll是您的Web应用程序dll)从Bin中丢失了夹。
显然,这导致了编译问题,因此导致“无法加载全局类型”异常。清洁解决方案并删除程序集对于后续的构建没有什么影响。我的解决方案是将Web应用程序的项目设置中的输出路径更改为Bin(而不是bin / x86 / Debug)。