1

表单包含主要设计,并在该表单的代码文件中包含所有代码。我刚刚复制了该表单并将其粘贴到 Visual Studio 解决方案资源管理器中存在原始表单的同一目录中。它现在显示与资源相关的错误。当我继续前进时,它显示错误:

错误 MSB3105:在“资源”参数中多次指定了项目“obj\x86\Debug\BAS.frmGI1.resources”。

现在我只是失去了主窗体的设计。如何恢复原始表单的设计?

4

2 回答 2

4

由于您已经制作了原始表单的副本,因此所有内容(类、设计器代码等)都被完全相同地复制。与任何其他类一样,如果您定义了两个具有完全相同名称的类;他们会发生冲突。同样,如果您有两个分部类的文件,并且在两个文件中都声明了一个具有相同名称的变量;它会发生冲突。


您所做的是导致与设计者发生上述冲突......并且无需恐慌(或诉诸版本控制或诸如此类的东西 - 没有双关语旨在批评关键修复的答案)。

接下来,让我们修复这些类名!

  1. 只需右键单击副本,然后从项目中排除

  2. 浏览到您的项目目录

  3. 使用您最喜欢的文本编辑器打开FormName.Designer.vb(或FormName.Designer.cs用于 C#)(但不是(!) 使用 Visual Studio);

  4. 查找表单的类(MySuperAwesomeForm在本例中):

    Partial Class MySuperAwesomeForm
    

    在 C# 中:

    partial class MySuperAwesomeForm // FormName.Designer.cs
    
    public partial class MySuperAwesomeForm : Form // FormName.cs
    
  5. MySuperAwesomeForm用其他名称替换所有实例;示例:MySuperAwesomeFormTwo;

  6. 现在使用您最喜欢的文本编辑器打开FormName.vb(或FormName.cs用于 C#)(再次确保它不是(!) Visual Studio);

  7. MySuperAwesomeForm用步骤#4中使用的相同值替换所有实例;示例:MySuperAwesomeFormTwo;

    • 保存并关闭这两个文件(如果它们仍处于打开状态)。

从技术上讲,您应该只需要在每个文件的前几行之一(该行以、或开头)MySuperAwesomeForm替换为。MySuperAwesomeFormTwoPublic Classpartial classpublic partial class

最后,返回 Visual Studio,将新重新分类的表单添加回项目。

于 2013-04-23T20:22:42.663 回答
2

您可以制作表单的副本,但您必须更改其名称(文件名和对象名称),以免与原始表单混淆。然后,在 Visual Studio 中,您将添加表单...现有...,然后选择新表单。

您的错误消息提到了 obj 目录,因此该错误可能是在构建期间发生的。我会查看您项目的资源以查看可能已复制的内容,如果它超出了您复制的原始文件。

如果您丢失了原始源代码,您可能无法恢复它。我希望您使用某种形式的源代码控制(VSS、TFS 等),或者至少经常复制到备份的网络磁盘?

于 2013-04-23T18:55:47.227 回答