【问题标题】:Why does the code compile a serialization assembly if I already created one?如果我已经创建了一个序列化程序集,为什么代码会编译一个序列化程序集?
【发布时间】:2012-06-29 09:43:09
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# .net web-services .net-3.5 xml-serialization


    【解决方案1】:

    它尝试加载.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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-22
      相关资源
      最近更新 更多