gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:38:27 25 4
gpt4 key购买 nike

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

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

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

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

enter image description here

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

最佳答案

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

关于c# - 如果我已经创建了一个序列化程序集,为什么代码会编译一个序列化程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11235016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com