我的确切代码如下:
// ContractsUserControl
namespace AC.WebGUI.UserControls
{
public partial class ContractUserControl : BaseUserControlObject
{
// Obviously stuff goes here.
}
}
// BaseUserControlObject
namespace AC.WebGUI.UserControls
{
public class BaseUserControlObject : System.Web.UI.UserControl
{
// A single property is declared here.
}
}
当我使用Visual Studio进行调试时,这100%完全正常,但是当在实时服务器上运行时,我收到编译错误:
CS0246:类型或命名空间名称' BaseUserControlObject'找不到(你错过了使用指令或汇编引用吗?)
我不明白这是怎么发生的,因为两个类都存在于同一个命名空间中,并且两个类都是公共的,因此不需要使用引用。
我所知道的关于ASPX的一切都说这应该有效,所以我甚至不知道从哪里开始找到问题的原因。
答案 0 :(得分:0)
程序集和命名空间是两回事。即使这些类在同一名称空间中,它们也可以位于不同的程序集中,如果由于某种原因加载了包含基类的程序集的旧版本,实际上不包含基类{{ 1}},然后你就会得到这个错误信息。
在调试时,Visual Studio通常会编译所有内容,因此这就是您在调试中看不到异常的原因,但也许您的服务器部署工具无法识别包含BaseUserControlObject
的程序集有过时版本。
编辑:我可以想象为什么服务器部署失败的原因是该库的旧版本已添加到GAC,但版本号尚未增加。在这种情况下,服务器将从GAC而不是本地加载程序集。然而,这只是一个疯狂的猜测。