Visual Studio 2010不断更改我的winforms控件

我在VS 2010中有一个奇怪的用户控件情况。表单设计师不断更改我的条目,然后告诉我它不存在! 它第一次编译并运行,然后如果我更改了一些不相关的东西,它会在designer.cs文件中给出一个错误( 无法解析符号SomeEntry )。

private SomeEntry someEntry; // ... this.someEntry = new **MyNameSpace**.SomeEntry(); 

如果我删除MyNameSpace。

 this.someEntry = new SomeEntry(); 

它有效,直到我再次做出改变。 如果我在鼠标位于更改的设计器文件上时查看该类,SomeEntry将显示SomeEntry.SomeEntry()而不是MyNameSpace.SomeEntry()

基本上,定义是这样的:

 namespace MyNameSpace { public partial class SomeEntry : FormValidatingUserControl { public SomeEntry() { InitializeComponent(); } } } 

那么,我该怎么办?

事实certificate,我应该在出现时完全发布我的代码,因为我相信有人会早点为我解决这个问题。

问题是我试图简化post,并更改MyNameSpace和SomeEntry的名称以保持通用。

该项目是命名空间的东西 (到目前为止,正常),并且entity framework中有一个生成的类。

为了重现这个问题,我创建了一个名为WinFormTestX的新项目。 因此,解决方案是WinFormTestX和项目WinFormTestX 。 我添加了一个名为WinFormTestX的类,但没有做任何事情。

 namespace WinFormTestX { public class WinFormTestX { public int ID { get; set; } } } 

现在,我创建一个UserControl(UserControl1)并在其上放一个简单的按钮。 编译它,工具箱按预期添加此控件。 现在,我将它放在Form1上并编译它并得到一个错误:

错误1类型名称’UserControl1’在类型’WinFormTestX.WinFormTestX’中不存在D:\ Data \ Projects \ Temp \ WinFormTestX \ Form1.Designer.cs 31 51 WinFormTestX

一旦我右键单击WinFormTestX类并从项目中排除 (或删除它),一切正常。

因此,只要在项目中使用与命名空间同名的类,即使它没有被使用,也会导致问题。 显然,既然我知道原因,那么有一个简单的方法。 但是,这是一个应该提交给微软的“漏洞”吗?

当手动将类移动到新的命名空间时,我发生了类似这样的事情。 如果你不小心,你的class级可以多次定义。 例如,可能存在残留的设计器.cs文件,该文件仍然在其旧命名空间中定义该类或其他一些.cs / .designer.cs不匹配。 换句话说,您的程序集可能包含SomeEntry.SomeEntryMyNameSpace.SomeEntry类。

检查Visual Studio对象浏览器以查看是否在多个名称空间中定义了SomeEntry