原創|其它|編輯:郝浩|2009-07-29 10:39:19.000|閱讀 643 次
概述:在使用.NET的XmlSerializer時,.NET會在運行時編譯出一個或多個專門用來解析序列化類型的臨時程序集DLL. 編譯和加載這個臨時的程序集是非常耗時的一件事. 而且有時在Production環境下,沒有編譯器(csc.exe),還會發生錯誤.
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
在使用.NET的XmlSerializer時,.NET會在運行時編譯出一個或多個專門用來解析序列化類型的臨時程序集DLL. 編譯和加載這個臨時的程序集是非常耗時的一件事. 而且有時在Production環境下,沒有編譯器(csc.exe),還會發生錯誤.
“c6pyy1to”就是.NET動態編譯出的程序集.
用Stopwatch測試,這一塊用時2秒左右.
為了解決這一問題,在.NET SDK中MS提供了一個工具sgen.exe, 用sgen我們可以在運行之前”預編譯”這個動態生成的dll.
下面是sgen的說明和基本的用法:
Setting environment to use Microsoft .NET Framework v2.0 SDK tools.
For a list of SDK tools, see the 'StartTools.htm' file in the bin folder.
D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0>sgen
Microsoft (R) Xml Serialization support utility
[Microsoft (R) .NET Framework, Version 2.0.50727.42]
Copyright (C) Microsoft Corporation. All rights reserved.
Missing required command-line argument: The name of the source assembly.
Generates serialization assemblies for use with XmlSerializer.
The utility allows developers to pre-generate assemblies for serialization
and deploying the assemblies with the application.
Usage: sgen.exe [[/assembly:<assembly name>] | [<assembly file location>]]
[/type:] [/reference:] [/compiler:] [/debug] [/keep] [/nologo]
[/silent] [/verbose]
我們可以利用VS的post-build event將這個命令在VS編譯后自動運行, 做法如下:
再次編譯項目,sgen已經自動運行了.
為了檢驗sgen的效果,我們可以再次運行圖二中的代碼,這次這塊代碼只用了20多毫秒.
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自:博客園