如果命名空间与路径不匹配,则不会打开从其他表单继承的表单

时间:2014-09-08 12:56:06

标签: c# forms inheritance namespaces designer

我遇到一个问题,我的公司基础框架中有一个从基础控件继承的表单。

此处的基本控件称为PlugInBase,并且继承自标准System.UserControl。 必须修复namespace并且与程序集的路径不匹配。 namespacenamespace Omitec.ThreeG.Runtime.Portal.PlugIns,但路径为Omitec.ThreeG.Runtime.Portal.WindowsNative.PlugInBase

如果我尝试根据PlugInBase打开表单,我会看到标准的Exception屏幕,说明无法显示设计器,因为Omitec.ThreeG.Runtime.Portal.PlugInBase无法加载。

然而,如果我更改namespace中的PlugInBase以匹配其打开的路径,则无需麻烦。

另一个奇怪的事情是我们办公室的一些工程师只有这个错误。其他人没有。

经过进一步调查,这肯定是继承的控件命名空间与文件路径不匹配的问题。

是否有一些设置严格执行命名空间的查找?正如我之前提到的,办公室中的一些开发人员在完全相同的代码段中没有这个问题。

由于框架是共享代码,因此无法从标准中更改namespace

这让我疯了一会儿。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Visual Studio有时会这样做。

请记住,设计人员确实运行表单的构造函数来生成设计器。如果那里有东西可能会抛出这个异常,那可能是你的原因。

由于程序实际上没有运行,因此存在设计时错误的空间。

如果这不是问题,我修复它的另一种方法是关闭所有开放的设计师。清洁解决方案,构建,然后再次打开设计器。有时我必须添加一个关闭visual studio的额外步骤,如果它已经打开了一段时间。