2

当您在 Visual Studio 2008 中打开一个新的 C# Windows 窗体应用程序项目时,您会获得大量自动生成的代码(AssemblyInfo.cs、Resources.Designer.cs、Settings.Designer.cs、Form1.Designer.cs、Form1.resx、Program 。CS)。

除了将工具箱中的组件添加到 Form1.cs[Design] 并将代码添加到 Form1.cs 之外,您还可以更改哪些文件?如何?哪些文件应该保持原样?

PS:据我所知,这是一个广泛的主题。我不期望一个详尽的答案。您愿意分享的任何信息都可以。我还想提一下,我是 C# 初学者,只想要最基本的信息。

PPS:如果您正在考虑回答“搜索互联网”或类似的问题,请不要。我已经搜索了互联网,并且会一次又一次地这样做,直到找到我正在寻找的答案。我找到了一些有用的信息,但我觉得我需要更多信息。我想我很可能会在 stackoverflow.com 上得到它。


更新1:这个问题已经回答。我已将 sh_kamalh 的答案标记为已接受。我也想将 David 和 Hans Passant 的答案标记为已接受,但我认为您不能将多个答案标记为已接受。或者你可以吗?

根据我从答案中得出的结论,您永远不应该在 Visual Studio 2008 的 C# Windows 窗体应用程序项目中更改自动生成的代码。不过,我并不理解答案中的所有内容,并且可能忽略了一些东西。

如果您不同意上面的摘要或下面的答案,请随时添加一个矛盾的答案。或者,如果您有补充以下答案的答案,请随时添加该答案。我相信关于这个主题还有更多要说的。


更新 2:您似乎也可以编写自己版本的 C# Windows 窗体应用程序项目(请参阅下面的 Davids 回答,我在写“更新 1”时忘记了这个答案)。如果你这样做,似乎你应该从头开始。

4

3 回答 3

7

自动生成的文件:

  • AssemblyInfo.cs :里面的属性是通过 Project + Properties、Application Tab、Assembly Information 按钮设置的。直接编辑文件是可以的,IDE不容易被它弄糊涂。

  • Settings.Designer.cs :从 Settings.settings 文件自动生成,该文件又从 Settings 设计器生成。对此文件的任何编辑都将很快丢失。

  • Resources.Designer.cs :从 Resources.resx 文件自动生成,该文件又从资源设计器生成。对此文件的任何编辑都将很快丢失。

  • Form .Designer.cs :由表单设计器自动生成。可以编辑此文件,没有存储表单布局的独立文件。通过在设计时运行此代码并使用反射来恢复表单和控件属性来生成设计视图。并在关闭设计器时再次保存,它会重新生成 InitializeComponent 方法和控制变量。让您的代码更改以在此过程中生存需要准确地编写代码设计师自己的方式。当您进行超出简单属性值更改的更改时,这是相当不重要的。还有相当大的风险,不明智的更改很容易导致异常。当在设计时发生这种情况时,您会得到臭名昭著的 WSOD(该死的白屏),它会显示一个通常非常神秘的异常,并告诉您不能再设计表单了。

当您在设计器中修改表单时,您可以通过观察它对 InitializeComponent 所做的更改来了解有关设计器生成代码的方式的更多信息。正确掌握这一点当然不是初学者材料,当您加快 .NET 编程速度时,您可能需要学习更多紧迫的东西。设计师的存在是为了让您的生活更轻松,并将出错的风险降到最低。

于 2010-09-24T13:09:57.430 回答
3

大多数这些文件都是模板化的,您可以修改它们在新项目中的包含以及文件中包含的内容。您甚至可以为新的项目类型或项目创建自己的模板。 http://msdn.microsoft.com/en-us/magazine/cc188697.aspx

至于修改已经存在的内容,除非您确定要处理的每个项目都需要这些更改,否则我不建议这样做,为不同的项目创建新模板会更容易/文件类型。

于 2010-09-24T11:26:06.253 回答
3

为什么要更改自动生成的文件?
如果是表单,则不应更改 .Designer.cs 或 .resx 文件,因为每次更改表单时都会生成它们,因此您所做的任何更改都将在下次重新生成代码时被覆盖。
如果您想更改 Designer.cs 中的某些内容,您可以在原始 cs 文件中进行更改,因为该类被标记为部分,这意味着来自文件 Form1.cs 和 Form1.Designer.cs 的代码被组合以生成最终代码。
如果要添加资源,请添加资源文件并保持生成的 .resx 文件不变。对于 AssemblyInfo.cs,您可以更改程序集的一般信息。

长话短说,只需保持生成的文件完好无损。

于 2010-09-24T11:28:35.140 回答