Предварительная компиляция
ngen в помощь.
Можно. Утиллиты были, но они много денег стоят. Но на мой взгляд это бессмысленно.
То есть я должен буду обернуть мое приложение в инсталлятор, и после копирования этого приложения в директорию вызвать для него ngen? И где будет храниться мой скомпилированный код?
Мне казалось VS умеет создавать инсталл-проекты с автоматической прекомпиляцией сборок, но это всеголишь предположение - еще не доводилось их создавать.
Это головная боль ngen-а, он помещает код в кэш прекомпилированных сборок.
Зависит от вашего кода. Если например используется кодогенерация в рантайме то JIT будет вызываться (например при xml-сериализации). Также некоторые специфические операции с отражением могут приводить к генерированию кода (вызов метода например) или инстранциирование параметрических типов.
Никогда нельзя сказать точночто код полностью сгенерирован статически - это свойство управляемого кода. Считайте это плюсом или минусом.
Сборка компилируется один раз за сессию системы - до следующей перезагрузки. Т.е. при первом запуске приложения, обычно падение производительности в этом случае не считается критичным.
Windows Vista поступает с приложениями .NET так же? То есть, в ней тоже кэш хранится до завершения сессии?
А смысл? Оно запускается то ррраз и все. :D
Вы VisualStudio видели? Или SharpDevelop?
JIT не компилирует всю сборку целиком - это только ngen позволяет оптом. Единица компиляции JIT это метод. По мере вызова методов в приложении компилируется весь управляемый код.