有时,C#项目将在它属于另一个C#项目中的用户控件,我将不得不将其移动。试图简单地将该用户控件复制粘贴到命名空间错误的结果上。假设项目1的命名空间为namespace General.Category1.Controls
,项目2的命名空间为namespace General.Category2.Controls
。复制用户控制
的步骤我最初采取是:
1)复制+粘贴控制(包括.cs
,designer.cs
和.resx
文件)项目1到项目2
2)更改命名空间项目2的namespace General.Category2.Controls
在建设时这一点上,我从该副本+粘贴之前,使用此控件的形式获得了额外的错误,状态'The type of namespace name 'UserControl1' does not exist in namespace 'General.Category1.Controls' (are you missing an assembly reference?)
。事实证明,designer.cs
表单文件在复制+粘贴后没有更新到正确的名称空间。
于是我新增加一个额外的步骤:
3)更改声明,以配合又名private General.Category2.Controls UserControl userControl1;
我很困惑,为什么designer.cs
文件不会已经更新的General.Category2.controls
新的命名空间因为通常不建议编辑designer.cs
文件。但是,再次,也许可以修改它们,只要你不触及InitializeComponent()
方法,因为它在实际文件本身中声明。
总之,为什么所有的designer.cs
不自动更新?是否知道在何处使用此控件的实际答案,并按照我所做的更新自己的声明?
[编辑]:前两步是为控制本身(它是.cs
和.designer.cs
文件)。第三步是在复制之前将控件置于其中的任何表单,因为它仍在使用旧的名称空间,所以必须更改所有.designer.cs
文件。
你是如何引用用户控件是这是一个Web应用程序或Windows应用程序..?在它是一个Web应用程序,你可以显示你如何在.aspx文件中引用它? – MethodMan
而不是像这样反复复制和粘贴它们,为什么不制作一个控制库项目和参考? – Muckeypuck
@MethodMan这是一个Windows应用程序。 – McRealz