表单包含主要设计,并在该表单的代码文件中包含所有代码。我刚刚复制了该表单并将其粘贴到 Visual Studio 解决方案资源管理器中存在原始表单的同一目录中。它现在显示与资源相关的错误。当我继续前进时,它显示错误:
错误 MSB3105:在“资源”参数中多次指定了项目“obj\x86\Debug\BAS.frmGI1.resources”。
现在我只是失去了主窗体的设计。如何恢复原始表单的设计?
表单包含主要设计,并在该表单的代码文件中包含所有代码。我刚刚复制了该表单并将其粘贴到 Visual Studio 解决方案资源管理器中存在原始表单的同一目录中。它现在显示与资源相关的错误。当我继续前进时,它显示错误:
错误 MSB3105:在“资源”参数中多次指定了项目“obj\x86\Debug\BAS.frmGI1.resources”。
现在我只是失去了主窗体的设计。如何恢复原始表单的设计?
由于您已经制作了原始表单的副本,因此所有内容(类、设计器代码等)都被完全相同地复制。与任何其他类一样,如果您定义了两个具有完全相同名称的类;他们会发生冲突。同样,如果您有两个分部类的文件,并且在两个文件中都声明了一个具有相同名称的变量;它会发生冲突。
您所做的是导致与设计者发生上述冲突......并且无需恐慌(或诉诸版本控制或诸如此类的东西 - 没有双关语旨在批评关键修复的答案)。
接下来,让我们修复这些类名!
只需右键单击副本,然后从项目中排除;
浏览到您的项目目录;
使用您最喜欢的文本编辑器打开FormName.Designer.vb
(或FormName.Designer.cs
用于 C#)(但不是(!) 使用 Visual Studio);
查找表单的类(MySuperAwesomeForm
在本例中):
Partial Class MySuperAwesomeForm
在 C# 中:
partial class MySuperAwesomeForm // FormName.Designer.cs
public partial class MySuperAwesomeForm : Form // FormName.cs
MySuperAwesomeForm
用其他名称替换所有实例;示例:MySuperAwesomeFormTwo
;
现在使用您最喜欢的文本编辑器打开FormName.vb
(或FormName.cs
用于 C#)(再次确保它不是(!) Visual Studio);
MySuperAwesomeForm
用步骤#4中使用的相同值替换所有实例;示例:MySuperAwesomeFormTwo
;
从技术上讲,您应该只需要在每个文件的前几行之一(该行以、或开头)MySuperAwesomeForm
替换为。MySuperAwesomeFormTwo
Public Class
partial class
public partial class
最后,返回 Visual Studio,将新重新分类的表单添加回项目。
您可以制作表单的副本,但您必须更改其名称(文件名和对象名称),以免与原始表单混淆。然后,在 Visual Studio 中,您将添加表单...现有...,然后选择新表单。
您的错误消息提到了 obj 目录,因此该错误可能是在构建期间发生的。我会查看您项目的资源以查看可能已复制的内容,如果它超出了您复制的原始文件。
如果您丢失了原始源代码,您可能无法恢复它。我希望您使用某种形式的源代码控制(VSS、TFS 等),或者至少经常复制到备份的网络磁盘?