Почему компилятор C # пинает во второй раз? - PullRequest
2 голосов
/ 19 августа 2010

У меня есть приложение WinForm.Я скомпилирую его, дважды щелкните по немуКак и ожидалось, csc.exe запускается, затем уходит, и приложение запускается.

Я предполагаю, что в этот момент приложение было подключено, поэтому нет никаких причин для запуска csc.exe.

Затем я закрываю приложение и запускаю его снова.Я вижу, как снова включается csc.exe.

Что происходит?

Ответы [ 3 ]

4 голосов
/ 19 августа 2010

Вы используете сериализацию вообще?Я считаю, что в некоторых случаях будет построена временная сборка.Что-нибудь похожее в вашем приложении?

Обратите внимание, что JIT-компилятор не связан с csc, так что это не должно быть с этим связано.

2 голосов
/ 19 августа 2010

Если вы используете сериализацию, она должна скомпилировать динамическую сборку, чтобы создать необходимые классы.

Это означает, что большинство вызовов веб-службы будут вызывать csc.exe в первый раз .После этого динамическая dll должна быть в кеше.

1 голос
/ 19 августа 2010

Если вы используете XmlSerializer (прямо или косвенно, т.е. при вызове веб-служб), то внутри него генерируется временная сборка с реализацией сериализатора: создается исходный файл на основе информации об отражении и компилируется с помощью csc.exe. Вы можете предварительно сгенерировать сериализаторы во время разработки с помощью SGen .

...