【问题标题】:Copy User Control from one project to another within same solution在同一解决方案中将用户控件从一个项目复制到另一个项目
【发布时间】:2016-01-27 18:04:11
【问题描述】:

有时,一个 C# 项目中会有一个属于另一个 C# 项目的用户控件,我必须将它移过来。尝试简单地复制 + 粘贴该用户控制会导致命名空间错误。假设项目 1 的命名空间为 namespace General.Category1.Controls,项目 2 的命名空间为 namespace General.Category2.Controls

我最初采取的步骤是:

1) 从项目 1 复制 + 粘贴控件(包括 .csdesigner.cs.resx 文件)到项目 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) 更改声明以匹配 General.Category2.controls aka private General.Category2.Controls UserControl userControl1; 的新命名空间

我很困惑为什么 designer.cs 文件不会更新,因为通常不建议编辑 designer.cs 文件。但是话又说回来,只要您不触摸实际文件中所述的InitializeComponent() 方法,就可以修改它们。

总之,为什么所有designer.cs 不自动更新?知道这个控件在哪里使用并像我一样自己更新声明的实际答案是什么?

[编辑]:前两个步骤是针对控件本身的(它是 .cs.designer.cs 文件)。第 3 步用于关联在复制之前放置控件的任何表单,因为它仍在使用旧的命名空间,因此所有表单 .designer.cs 文件也必须更改。

【问题讨论】:

  • 您是如何引用用户控件的,这是 Web 应用程序还是 Windows 应用程序..?在它是一个 Web 应用程序中,你能在 .aspx 文件中展示你是如何引用它的吗?
  • 与其这样反复复制粘贴,不如自己做一个控件库项目,参考一下?
  • @MethodMan 这是一个 Windows 应用程序。
  • @Muckeypuck 这就是我们正在做的事情,但是有两个控制库项目。控件是在第一个不正确的控件中制作的,因此我将其复制并粘贴到第二个正确的控件中。
  • 听起来不太对劲。如果要将其粘贴到第二个中,则只需将其粘贴一次。我想有些东西我不明白。您是否正在为每个项目复制您的控制库?

标签: c# .net visual-studio-2010 copy-paste multiple-projects


【解决方案1】:

去过!我不为此使用复制粘贴。 在 VS-2017 中,可以将 UserControl1 复制到另一个项目中,如下所示:

  • 在 Windows 中:将 UserControl1.cs、.designer.cs 和 .resx 复制到您的新项目中 目录
  • 在 VS 中:在解决方案资源管理器中右键单击您的项目,将其设置为 启动 项目

  • 在解决方案资源管理器中右键单击新建项目,然后选择添加现有项目

  • 现在,在文件框中选择 UserControl1.cs文件

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

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

注意如果您将控件移动到新的 Framework 或 Core 类库中,请注意尚未引用 WinForms!在使用我上面的提示添加现有项目之前,请确保添加对 System.Windows.Forms 的引用。

【讨论】:

  • 我这样做了,它确实显示在我的工具箱中,但我无法再打开导入控件的设计器视图。有解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 2021-08-19
  • 1970-01-01
  • 2023-01-19
  • 2015-08-03
相关资源
最近更新 更多