为什么C#编译器第二次启动?

时间:2010-08-18 20:55:21

标签: c# winforms .net-3.5 compiler-construction jit

我有一个WinForm应用程序。我编译它,双击它。可以预见的是,csc.exe启动,然后消失,应用程序出现。

我假设此时应用程序已被jitted,因此csc.exe没有理由再次启动。

然后我退出应用程序并重新启动它。我看到csc.exe再次启动。

发生了什么事?

3 个答案:

答案 0 :(得分:4)

您是否正在使用序列化?我相信在某些情况下会建立临时集会。您的应用中有类似的东西吗?

请注意,JIT编译器与csc无关,因此不应该与它有任何关系。

答案 1 :(得分:2)

如果使用序列化,则需要编译动态程序集以创建所需的类。

这意味着大多数webservice调用都会导致第一次调用csc.exe 。之后,动态dll应该是缓存。

答案 2 :(得分:1)

如果您使用XmlSerializer(直接或间接,即在调用Web服务时),则在其中生成具有序列化程序实现的临时程序集:根据反射信息创建源文件并使用csc.exe进行编译。您可以按开发时间SGen预生成序列化程序。