命名空间中的类无法在其继承的同一命名空间中找到兄弟类

时间:2017-07-17 07:57:07

标签: c# asp.net namespaces

我的确切代码如下:

// 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的一切都说这应该有效,所以我甚至不知道从哪里开始找到问题的原因。

1 个答案:

答案 0 :(得分:0)

程序集和命名空间是两回事。即使这些类在同一名称空间中,它们也可以位于不同的程序集中,如果由于某种原因加载了包含基类的程序集的旧版本,实际上包含基类{{ 1}},然后你就会得到这个错误信息。

在调试时,Visual Studio通常会编译所有内容,因此这就是您在调试中看不到异常的原因,但也许您的服务器部署工具无法识别包含BaseUserControlObject的程序集有过时版本。

编辑:我可以想象为什么服务器部署失败的原因是该库的旧版本已添加到GAC,但版本号尚未增加。在这种情况下,服务器将从GAC而不是本地加载程序集。然而,这只是一个疯狂的猜测。

相关问题