如果我已经创建了一个序列化程序集,为什么代码会编译?

时间:2012-06-27 21:24:03

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

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

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

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

然而,当我对代码进行分析时,我发现代码中仍然存在一个命中,它仍然编译一个序列化程序集(完全忽略我的预生成程序集,由ProcMon验证)。

enter image description here

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

1 个答案:

答案 0 :(得分: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)


您可能也对此问题感兴趣:Generating an Xml Serialization assembly as part of my build