我有一个非常大而复杂的winforms应用程序。为了减少启动时间,我使用以下批处理文件预先生成了序列化程序集。为什么我的.NET启动时间随预生成序列化程序集增加而增加?
; delete any existing serialization assemblies
del *XmlSerializers.dll
; gen new serialization assemblies
for %%a in (*.dll) do sgen /assembly:%%a
; delete .deleted files (generated for assemblies which do not allow serialization)
del *.dll.deleted*
但令我惊讶的是,启动时间实际上从4.6秒增加到了6.1秒 - 跳了1.5秒。无论是冷开始还是温暖,这都是事实。
所以,问题:
- 为什么我的应用程序到位序列化组件启动慢?
- 当应用程序生成序列化程序集时,是否有方法通过Perfmon或其他工具查看?
- 我正在生成序列化程序集吗?
下运行,除非有人知道如何打开批处理文件语法突出显示,我们只需将其保留为“lang-none” 。 – Adam 2012-08-14 23:59:34
您生成了多少个序列化程序....如果数量很大....也许您可以将它们与ILMerge结合使用?你在64位Windows上运行吗?您是否在项目中添加对预生成序列化DLL的引用? – 2012-08-15 01:56:41
您可以使用/ Type选项仅为将被序列化的类型生成序列化代码...而不是生成DLL中的所有公共类型。 – 2012-08-15 02:02:51