【问题标题】:auto-generated Code自动生成的代码
【发布时间】:2010-10-04 05:56:42
【问题描述】:

我正在调试一些代码,并注意到一堆自动生成的方法和对象。

在这些代码的顶部,我找到以下注释:

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:2.0.50727.42
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

如何找出生成代码的原因?我的好奇心在这方面让我变得更好,所以这就是我问的原因。我在 Google 中查找了部分评论,但没有发现任何具体内容。

【问题讨论】:

标签: c# visual-studio


【解决方案1】:
    //------------------------------------------------------------------------------ 
    // <auto-generated> 
    // This code was generated by a tool. 
    // Runtime Version:2.0.50727.42 
    // 
    // Changes to this file may cause incorrect behavior and will be lost if 
    // the code is regenerated. 
    // </auto-generated> 
    //------------------------------------------------------------------------------



namespace FirstWeb 
{ 
    public partial class _Default 
    { 

        /// <summary> 
        /// form1 control. 
        /// </summary> 
        /// <remarks> 
        /// Auto-generated field. 
        /// To modify move field declaration from designer file to code-behind file. 
        /// </remarks> 
        protected global::System.Web.UI.HtmlControls.HtmlForm form1; 
    } 
} 

您不会更改此自动生成的 C# 文件。当您不断向页面添加 ASP.NET 控件时,此文件会随着附加声明而增长。在旧版本的 C#(2.0 版之前)和 Visual Studio(2005 版之前)中,此代码也将位于常规 Default.aspx.cs 文件中。

随着 C# 中部分类的引入,属于同一类的代码可以拆分到多个文件中。在这里,您可以看到“公共部分类 _Default”,它用于保存 Visual Studio 设计器生成的代码。您还将在 Default.aspx.cs 文件中看到相同的类签名(您可以使用它来编写自己的自定义代码)。

因此,开发人员(您)和设计人员(Visual Studio)可以独立工作,而不会相互交叉。

这取自First Web Program (Web Project) in C# Explained

【讨论】:

    【解决方案2】:

    这完全取决于代码是什么。

    大概您知道您正在调试的类 - 无论它是 ORM 的一部分,还是 Web 服务生成代理的一部分等。这是至关重要的信息。

    【讨论】:

      【解决方案3】:

      在我看来就像 Visual Studio。 Try Googling only part of the message.

      【讨论】:

        【解决方案4】:

        这也可以是由 ResXFileCodeGenerator 生成的 .Designer.cs 文件,它为 .resx 文件生成强类型包装器。

        【讨论】:

          【解决方案5】:

          嗯,它是什么代码?大多数 MS 工具都包含此标头。 xsd.exe 有,sqlmetal (LINQ-to-SQL) 有,等等。试着往下看几行……例如,我的快速 xsd 测试显示第二个评论块:

          // 
          // This source code was auto-generated by xsd, Version=2.0.50727.3038.
          // 
          

          但这在 LINQ-to-SQL 代码中不存在... ;-(

          【讨论】:

            【解决方案6】:

            这些 cmets 与我在一些服务参考文件中找到的完全匹配。这些是为 WCF 服务生成的代理文件,因此您的代码可能也在此区域中。

            如果您在解决方案资源管理器中看不到这些文件,请单击“显示所有文件”,它们将在服务引用节点中显示为 .cs 文件。

            【讨论】:

              【解决方案7】:

              Microsoft 的 SVCUTIL 工具 (http://msdn.microsoft.com/en-us/library/aa347733.aspx) 将在每个文件的顶部生成带有此注释的源代码文件,而不会将自己标识为生成文件的工具。

              【讨论】:

                【解决方案8】:

                我认为这段代码是由 Linq to SQL 引擎生成的。

                如果您了解如何使用 Sql Enities 进行编码,则可以对其进行修改

                【讨论】:

                  【解决方案9】:

                  这是 System.CodeDom 在从整个代码编译单元生成文件时生成的确切注释。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2010-12-29
                    • 1970-01-01
                    • 1970-01-01
                    • 2011-07-14
                    • 2015-04-19
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多