none
请问运行控制台程序的时候,C#是怎么找到main方法的 RRS feed

答案

  • 你好,

    我只知道如何设置.

    有两个都有含有Main代码

    然后可以在项目属性那里去设置使用那个类的Main方法

    然后在项目的ConsoleApplication1.csproj文件用记事本打开可以发现有一个节点是做这个配置工作的

     

    <PropertyGroup>
      <StartupObject>ConsoleApplication1.OhterProgram_</StartupObject>
    </PropertyGroup>
    
    希望我的答案对你有帮助.

     


    博客园: dotNetDR_ 的博客 - 天杀下来的BUG,不怕有我来挡!

    博客园介绍: 博客园创立于2004年1月,是面向软件开发者的高品质IT技术社区,聚集了很多优秀的软件开发者和IT技术学习者。

    • 已编辑 dotNetDR_ 2011年9月18日 16:04
    • 已标记为答案 祥祥 2011年9月24日 2:15
    2011年9月18日 13:50
  • Don Box的的 Essential .Net 里有讲这个

    在第二章的 CLR Loader小节里

     

    BTW,说起写微软方面技术类书的作家,多八卦一下

    专业的作家还是比搞技术的写书要强很多很多,Charles Petzold就是,俺现在还留他的典藏著作Windows Programming,厚厚的两本大砖头啊

     

    再者Jeffrey Richter,虽然没有作家的称号,但绝对应该给一个,记得一回在书店躲雨,随便翻翻书看,看到一本封面上写着Jeffrey的的大名,马上花银子支持一下

    Don Box这人技术绝对没说的,但写的书,确实比较费解,他早先喜欢研究COM组件和三维图形,现在据说在WPF部门,看他写的书,我觉得他自己一本书的前言里有一句非常恰当"不要因为一开始看不懂而难过,要知道我也是迷惑了足足6个月才搞明白的"


    • 已编辑 AceBear 2011年9月18日 15:11
    • 已标记为答案 祥祥 2011年9月24日 2:15
    2011年9月18日 14:55

全部回复

  • 你好,

    我只知道如何设置.

    有两个都有含有Main代码

    然后可以在项目属性那里去设置使用那个类的Main方法

    然后在项目的ConsoleApplication1.csproj文件用记事本打开可以发现有一个节点是做这个配置工作的

     

    <PropertyGroup>
      <StartupObject>ConsoleApplication1.OhterProgram_</StartupObject>
    </PropertyGroup>
    
    希望我的答案对你有帮助.

     


    博客园: dotNetDR_ 的博客 - 天杀下来的BUG,不怕有我来挡!

    博客园介绍: 博客园创立于2004年1月,是面向软件开发者的高品质IT技术社区,聚集了很多优秀的软件开发者和IT技术学习者。

    • 已编辑 dotNetDR_ 2011年9月18日 16:04
    • 已标记为答案 祥祥 2011年9月24日 2:15
    2011年9月18日 13:50
  • Don Box的的 Essential .Net 里有讲这个

    在第二章的 CLR Loader小节里

     

    BTW,说起写微软方面技术类书的作家,多八卦一下

    专业的作家还是比搞技术的写书要强很多很多,Charles Petzold就是,俺现在还留他的典藏著作Windows Programming,厚厚的两本大砖头啊

     

    再者Jeffrey Richter,虽然没有作家的称号,但绝对应该给一个,记得一回在书店躲雨,随便翻翻书看,看到一本封面上写着Jeffrey的的大名,马上花银子支持一下

    Don Box这人技术绝对没说的,但写的书,确实比较费解,他早先喜欢研究COM组件和三维图形,现在据说在WPF部门,看他写的书,我觉得他自己一本书的前言里有一句非常恰当"不要因为一开始看不懂而难过,要知道我也是迷惑了足足6个月才搞明白的"


    • 已编辑 AceBear 2011年9月18日 15:11
    • 已标记为答案 祥祥 2011年9月24日 2:15
    2011年9月18日 14:55
  • 好吧,谢谢
    2011年9月24日 2:15
  • 谢谢~~
    2011年9月24日 2:15
  • 每个进程跑起来时都会有一个入口,入口的名字理论上来说是可以设置,但要看开发工具的支持程度,进程的入口就像进程数据结构中固有的属性(但有可能不是),当它被load进内存后,内核调度进程执行时从登记的入口开始(首次运行)。值得一提的是,入口在编译时确定。
    祝愿父母长命百岁!
    2011年10月4日 13:44
  • 其实,入口点的名字是可以随便的,参数列表有一些限制,CLR 支持任意名字的入口点 (需要在 IL 上加上 .entrypoint 指令),但从语言层面,C#, VB 都不支持,它们仅支持

    void Main(),
    void Main(string[] args),
    int Main(),
    int Main(string[] args)。

    入口点的行为是由 Windows PE 文件结构决定的,而不是 CLR。Windows PE 中,Head 部分就有一个特定的入口点地址,用来表示在 Data 部分的入口点的实际偏移地址。当这个 PE 文件被加载时,Windows 会根据这个地址加载对应的 Data 部分代码,然后执行。

    对于托管程序生成的 Windows PE,其入口点是 CLR Hosting 的启动地址,然后再由 CLR 去根据 IL 中的 .entrypoint 的位置开始执行托管代码。

    注意,任何 PE 文件都可以存在入口点,不仅仅是 EXE,DLL 也是可以有入口点的。


    Mark Zhou
    2011年10月5日 9:43
  • 点击逐语句或逐过程运行,就会转到程序入口点即main方法。如下图

    • 已建议为答案 SQL STUDIO 2011年11月29日 7:21
    2011年11月29日 7:21