9

完整的错误描述如下:

在此处输入图像描述

我发现之前发布了一些类似的问题:AB

但是A和B中的问题没有提供问题描述的详细信息(也许我们提示了相同的错误信息但由不同的原因引起?我不确定..)。无论如何,A和B中的答案都没有好的解决方案。所以我决定发布类似的问题,并提供更多细节。

我的问题如下:

Designer 会自动生成一个新代码 (ErrSer1.Designer),其中包含 (ErrSer.Designer) 中相同的部分类名。[显示在 printScreen_1 -> 第 25 行]

我们可以看到的区别是,一个在 ErrSer1.Designer 中(额外的自动生成的)

内部类 ErrSer

另一个在 ErrSer.Designer 中(应该是原来的那个)

部分类 ErrSer

这是显示 ErrSer1.Designer 的 printScreen_1 (额外的自动生成的)[注意第 25 行]

在此处输入图像描述

这是显示 ErrSer.Designer 的 printScreen_2 (原始的和通常的)[注意第 3 行]

在此处输入图像描述

最后......我能做些什么来解决这个恼人的自动生成代码问题?

EDIT1: 我的 ErrSer 表单声明如下

public partial class ErrSer : Form

EDIT2: 我的 .csproj 文件

我的 .csproj 文件位置

4

4 回答 4

2

您(意外)已将“ErrSer.resx”文件的“自定义工具”属性设置为“ResXFileCodeGenerator”。因此 Visual Studio 会为该文件生成一个冗余源文件。

要解决此问题,请打开解决方案资源管理器,然后在“FormFile”文件夹中展开“ErrSer.cs”节点。右键单击“ErrSer.resx”文件并选择“属性”。在属性窗口中清除“自定义工具”属性的值:

解决方案资源管理器和属性窗口

清除指定的值,然后构建项目。

于 2013-11-21T09:59:17.890 回答
1

您的问题是您有一个Form命名的ErrSer资源文件和ErrSer一个使用自定义工具集命名的资源文件。我想到这个案子的发生只有两个条件

  1. 您有一个表单,并且您不小心在该文件上设置了自定义工具属性,因此即使您不需要生成它并且为您的资源生成了 ErrSer.Designer.cs 文件。

  2. 你有一个表单并且你创建了一个同名的 ResX。

对于第一种情况,只需删除 ResX 文件和生成的 Designer 文件上的自定义工具属性。对于第二种情况,重命名您的 ResX 文件。

于 2013-11-20T14:17:28.037 回答
0

@jhyap:你有两个选择..

  1. 将系统生成的类标记为部分。

原因:您已经创建了一个与系统生成的类相似的部分类。但是系统不知道您创建了具有相同名称的类。通过使用关键字 partial 标记系统生成的类。编译器会将您编写的类与系统生成的类合并,并将其视为单个类。

注意:如果您决定将系统生成的类标记为部分,则必须将访问修饰符从内部修改为公共,或者将您的类设置为内部。因为访问修饰符在使用部分类概念时应该匹配。

  1. 更改您编写的类的名称。

原因:如果您想确保您编写的类与系统生成的类无关,并且您不想将系统生成类的成员与您的类合并。那么这是最好的解决方案。

上述步骤之一肯定会解决您的问题。

于 2013-11-21T11:35:20.090 回答
0

看这篇文章,你似乎可以改变后面代码生成的行为。

提供的代码似乎适用于 vs 2005/2008(最后一次修改似乎是 2009 年)

也许你可以适应 2010 年或以后

根据这篇文章,2012 年似乎有一个扩展名

于 2013-11-15T04:47:27.967 回答