3

我的客户端代码调用了一个老式的 .asmx Web 服务。为了提高性能,我使用以下命令预先生成了序列化程序集,该命令在 bin/release 文件夹中运行:

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

它本质上是遍历所有 .dll 文件并调用sgen /assembly:foo.dll它们。在此命令之后,每个程序集都有一个 foo.XmlSerializers.dll 程序集。

但是,当我分析代码时,我发现代码中仍然存在性能问题,并且它仍然编译序列化程序集(完全忽略了我预先生成的程序集,正如 ProcMon 所验证的那样)。

在此处输入图像描述

为什么它不使用我预先生成的序列化程序集?

4

1 回答 1

0

它尝试加载.XmlSerializers.dll文件,但由于某种原因失败,而是重新生成它。可能是因为它与您的程序集不同步。

尝试将此添加到您的app.config文件中:

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

这将使生成器将遇到的错误打印到事件日志中。

更多信息:XmlSerializers、ModuleVersionId、ILMerge 和 You - Bits in Motion(博客)


您可能还对这个 SO 问题感兴趣:Generating an Xml Serialization assembly as part of my build

于 2012-06-29T15:37:29.427 回答