通过设计者自动生成的代码的原因 - 缺少类型的“x”的声明partial修饰符(Missing pa

2019-08-18 20:51发布

完整的错误说明是按如下:

而且我发现了几个类似的问题之前发布的: 一个和乙

但在A和B的问题不提供问题描述的细节(或许我们提示了同样的错误消息,但由不同的原因造成的呢?我不知道..)。 任何如何,答案在A和B没有很好的解决办法。 所以我决定用一些更详细张贴类似的问题。

我的问题是按照如下:

设计器自动生成一个新的代码(ErrSer1.Designer),它包含在(ErrSer.Designer)相同部分的类名。 [图中所示为printScreen_1 - >线25]

正如我们所看到的区别是,一个是在ErrSer1.Designer(额外的自动生成的一个)

内部类ErrSer

另外一个是在ErrSer.Designer(原一个谁假设是)

局部类ErrSer

这里是printScreen_1显示ErrSer1.Designer(额外的自动生成一个)[注意线25]

这里是printScreen_2显示ErrSer.Designer(原始的和通常的一种)[注意线3]

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

EDIT1:我ErrSer表格声明如下

public partial class ErrSer : Form

EDIT2:我的.csproj文件

我的.csproj文件位置

Answer 1:

您(意外),已经为“ErrSer.resx”文件“ResXFileCodeGenerator”中的“自定义工具”属性。 因此,Visual Studio生成该文件的冗余源文件。

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

然后,清除指定值生成项目。



Answer 2:

你的问题是,你有一个Form名为ErrSer并命名一个资源文件ErrSer与自定义工具集。 只有两个条件在我脑海中的这种情况下发生

  1. 你有一个形式,你不小心设置自定义工具属性上的文件,这样即使你不需要它来生成并为您的资源生成ErrSer.Designer.cs文件。

  2. 你有一个表单,您已经创建了一个的ResX同名。

对于第一种情况下,只需卸下的ResX文件,并生成设计文件自定义工具属性。 对于第二种情况下,重命名您的ResX文件。



Answer 3:

看着这条看起来,你可以更改代码的生成的行为背后。

提供的代码似乎是VS 2005/2008(上次修改似乎是2009)

也许你能适应它为2010或更高版本

似乎有根据本文对2012的扩展这里



Answer 4:

@jhyap:你有两个选择..

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

原因:你已经创建了一个局部类是类似于由系统生成的类。 然而,系统完全不认识你已经创建的类具有相同的名称。 通过用键字部分标记系统生成的类。 编译器将合并你已经与系统生成的类编写的类,并把它当作一个类。

注意:如果你决定标记系统生成的类的部分,你必须访问修饰符从内部modifiy公共,或让你的类内部。 因为访问修饰符应该使用部分类概念时相匹配。

  1. 改变你写的类的名称。

原因:如果万一你想确保你已经写好了CALSS无关与由系统生成的类,你不希望将系统生成的类成员与你的合并。 那么这是最好的解决办法。

其中一个上面提到的步骤将解决你的问题是肯定的。



文章来源: Missing partial modifier on declaration of type 'x' - cause by auto-generated code by designer