2012-06-27 20 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

相关问题