2012-06-27 18 views
3

我的客戶端代碼調用了舊式的.asmx Web服務。在努力提高性能,我使用以下命令預生成的序列化程序集,也就是在bin/release文件夾中運行:如果我已經創建了一個,爲什麼代碼會編譯一個序列化程序集?

for %%a in (*.dll) do sgen /assembly:%%a 

它主要是通過所有的.dll文件循環,並對其調用sgen /assembly:foo.dll 。在這個命令之後,每個程序集都有一個foo.XmlSerializers.dll程序集。但是,當我剖析代碼時,我發現代碼中仍然存在perf命中,它仍編譯序列化程序集(完全忽略了我的預生成程序集,經過ProcMon驗證)。

enter image description here

爲什麼不利用我的預生成的序列化程序集?

回答

0

它試圖加載.XmlSerializers.dll文件,但由於某種原因失敗,並重新生成它。可能是因爲它與你的程序集不同步。

嘗試添加以下內容到app.config文件:

<configuration> 
    <system.diagnostics> 
     <switches> 
      <add name="XmlSerialization.PregenEventLog" value="1" /> 
     </switches> 
    </system.diagnostics> 
</configuration> 

這將使發電機打印遇到的事件日誌中的錯誤。

的更多信息:XmlSerializers, ModuleVersionId, ILMerge, and You - Bits in Motion (blog)


您可能也有興趣在這個SO問題:Generating an Xml Serialization assembly as part of my build

相關問題