代码之家  ›  专栏  ›  技术社区  ›  Random Developer

自动生成的代码

  •  11
  • Random Developer  · 技术社区  · 17 年前

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

    在这些代码的顶部,我发现以下注释:

    //------------------------------------------------------------------------------
    // <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>
    //------------------------------------------------------------------------------
    

    怎么用? 你知道是什么生成了代码吗?我的好奇心在这件事上占了上风,所以我问。我在谷歌上搜索了部分评论,没有发现具体内容。

    9 回复  |  直到 11 年前
        1
  •  2
  •   Ferdeen    17 年前
        //------------------------------------------------------------------------------ 
        // <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中引入分部类,属于同一类的代码可以拆分为多个文件。这里您可以看到__public partial class_u default_,它用于保存 由Visual Studio设计器生成的代码 . 您也将在default.aspx.cs文件中看到相同的类签名(您使用它来编写自己的自定义代码)。

    因此,开发人员(您)和设计人员(Visual Studio)可以独立工作,而无需相互跨越。

    这是从 First Web Program (Web Project) in C# Explained

        2
  •  2
  •   Jon Skeet    17 年前

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

    大概你知道你正在调试的类——不管它是ORM的一部分,是Web服务生成的代理的一部分等等——这是关键的一点信息。

        3
  •  1
  •   Ian Varley    17 年前

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

        4
  •  1
  •   Anton Gogolev    17 年前

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

        5
  •  0
  •   user434917    17 年前

    我认为这段代码是由linq-to-sql引擎生成的。

    如果您了解如何使用SQL特性编码,则可以修改它。

        6
  •  0
  •   Marc Gravell    17 年前

    嗯,这是什么代码?大多数MS工具都包括这个头部。 xsd.exe 做, sqlmetal (linq to sql)可以,等等。试着往下看几行…例如,我的快速XSD测试显示了第二个注释块:

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

    但这在linq to sql代码中不存在…;

        7
  •  0
  •   Rich    17 年前

    这些注释与我的一些服务引用文件中的注释完全匹配。这些是为WCF服务生成的代理文件,因此您的代码可能也在这一领域。

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

        8
  •  0
  •   dlsou    15 年前

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

        9
  •  0
  •   user1435666    13 年前

    来自Microsoft的svcutil工具( http://msdn.microsoft.com/en-us/library/aa347733.aspx )将生成源代码文件,并且此注释位于每个文件的顶部,而不将自身标识为生成该文件的工具。