Visual Studio中的C#文件中没有Main()是否正常?

Visual Studio中的C#文件中没有Main()是否正常?,c#,visual-studio-2010,algorithm,c#-4.0,c#-3.0,C#,Visual Studio 2010,Algorithm,C# 4.0,C# 3.0,我有一些C#文件是由不再与我合作的人设计的 并非所有的C#文件都包含Main方法,尽管它们是构建和执行的 为什么会这样 除此之外,代码几乎没有注释。我需要阅读代码才能知道它在做什么。我怎样才能更有效地做到这一点? 来更新一下 我使用断点来跟踪控制流。但是,我发现流通过了一些方法,这些方法在某些类中没有任何有意义的定义。 比如说, class my Class { protected void function1() { } protected voi

我有一些C#文件是由不再与我合作的人设计的

并非所有的C#文件都包含
Main
方法,尽管它们是构建和执行的

为什么会这样

除此之外,代码几乎没有注释。我需要阅读代码才能知道它在做什么。我怎样才能更有效地做到这一点? 来更新一下

我使用断点来跟踪控制流。但是,我发现流通过了一些方法,这些方法在某些类中没有任何有意义的定义。 比如说,

 class my Class
 {
     protected void function1()
     {

     }
     protected void function12()
     {

     }

 }
调用function1(),然后程序退出function12()

我在VS中找不到这些函数的定义

任何帮助都将不胜感激

感谢:

主要方法是C#控制台应用程序或windows应用程序的入口点。(库和服务不需要主方法作为入口点。)。当应用程序启动时,Main方法是调用的第一个方法

可能不是所有的C#文件都是控制台应用程序或windows应用程序的入口点。这些文件可能是console/windows应用程序的一部分,但不是入口点。这些文件也可能属于完全不同的项目类型

至于解决代码功能的智能/高效方法,如果没有注释,您几乎只能阅读代码,除非您可以相信方法名称之类的东西能够准确地描述方法体。即使这样,你怎么能不先看它就确定呢


编辑:正如JBeck评论的那样,您可以始终在Visual Studio中运行代码,对您不理解的部分进行断点可以有所帮助。

入口点可以是任何东西。。只要它是静态的(甚至可以是私有的)


如果你真的很难找到。。您的另一个选择(除了查看项目属性)是反编译程序集(使用ILDasm或ILSpy、DotPeek等查看器),并在IL中查找
.entrypoint
操作码。

方法是针对控制台应用程序的,因此您不会在每个项目中都看到这一点是正常的,事实上,您可能很少在项目中看到它。您将遇到的大多数项目将是Windows(WinForms或WPF)或web(WebForms、ASP.NET MVC等)

Windows应用程序有一个启动窗体,它是项目本身的一个设置。web应用程序将有一个起始页,这也是项目和/或web服务器中的一个设置

掌握Visual Studio调试器是最重要的。了解如何设置断点、向监视窗口添加变量、读取堆栈跟踪、使用即时窗口输入对象名称以及在程序运行时询问系统中对象的状态


每当我得到一段新代码来维护、改进或扩展新功能时,我要做的第一件事就是在白板上绘制系统的表单或页面,然后决定每个表单/页面的可能入口点。有了此绘图后,您可以决定将不确定调用顺序甚至不确定调用顺序的代码的断点放在何处。

在遍历代码时使用断点将有助于对任何不易理解的部分进行排序。您是否在visual studio中?项目类型是什么?如果是应用程序,请右键单击它,转到“属性”,然后在第一个选项卡上查找启动类(位于下拉框中)。根据应用程序类型,这可能会有所帮助。您应该选中启动项目的“应用程序”->“启动对象”属性。它是Visual Studio 2012。如何确定它们是库还是服务?如何确定这些文件是否是其他应用程序或项目的一部分?谢谢每个应用程序都有.csproj文件吗?他们将列出属于该项目的所有文件。它还将列出对可能使用的其他库的引用。