2016-01-27 59 views
0

有时,C#项目将在它属于另一个C#项目中的用户控件,我将不得不将其移动。试图简单地将该用户控件复制粘贴到命名空间错误的结果上。假设项目1的命名空间为namespace General.Category1.Controls,项目2的命名空间为namespace General.Category2.Controls复制用户控制

的步骤我最初采取是:

1)复制+粘贴控制(包括.csdesigner.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文件。

+0

你是如何引用用户控件是这是一个Web应用程序或Windows应用程序..?在它是一个Web应用程序,你可以显示你如何在.aspx文件中引用它? – MethodMan

+0

而不是像这样反复复制和粘贴它们,为什么不制作一个控制库项目和参考? – Muckeypuck

+0

@MethodMan这是一个Windows应用程序。 – McRealz

回答

0

在那里!我不使用复制粘贴。 在VS-2017一个的UserControl1可以复制到另一个项目,具体如下:

  • 在Windows中:复制UserControl1.cs,并了.Designer.cs的.resx到您的新项目 目录
  • 在VS:右键单击您的项目在Solution Explorer中,将其设置为启动 项目

  • 在Solution Explorer中右击新项目,并选择添加现有我tem

  • 现在,请选择只有 UserControl1。CS文件中的文件盒

  • 等待,解决方案资源管理器将注册的其他文件,更改符号
  • 在VS,开放UserControl1.designer.cs ..改变命名空间新项目命名空间
  • 在VS,开放UserControl1.cs,改变命名空间新项目命名空间

这一步后,重建新项目。转到表单设计并打开工具箱。工具箱将显示您的UserControl。