gpt4 book ai didi

c# - SGEN XMLSerializer - 应该将 .XMLSerializers.dll 添加为对当前项目或 GAC 的引用?

转载 作者:太空狗 更新时间:2023-10-29 20:15:14 27 4
gpt4 key购买 nike

我用 XMLSerializer 类做了一些事情。像大多数初学者一样,我在应用程序启动时遇到性能问题。我阅读了很多博客、文章,最后使用了 SGEN 工具。现在性能看起来还不错,但我还有一些不清楚的地方。

1) 我应该像这样使用 SGEN 语法吗:

SGen.exe /assembly:MyAssembly /type:MyRootXmlType

或者这就足够了(我目前使用这种语法,我的程序集中只有一个可序列化的类):

SGen.exe /assembly:MyAssembly

什么时候/type 参数在实践中有用?

2) 我在 MSDN 上阅读 ( http://msdn.microsoft.com/en-us/library/ee704594.aspx )

This command generates the serializer assembly MyAssembly.XmlSerializers.dll, which should be added as a reference to the current project or to the GAC.

但在所有其他博客和文章(例如 SO)上,我读到只要将 MyAssembly.XmlSerializers.dll 放入 MyAssembly 所在的文件夹就足够了。

那么什么是对的呢?

3) 只生成 .XmlSerilizers.dll 并将其与 MyAssembly 一起部署就足够了,还是我应该向我的代码中添加一些东西?

我不这么认为,但我想确保我不必更改我的代码并且“魔法”会自动发生。

最佳答案

如果您不为 sgen.exe 使用/type 参数,那么它将为程序集中的所有 公共(public)类型生成反/序列化代码。请注意,XML 序列化中不使用 [Serializable] 属性。我怀疑您是否想要这个,使用/type 来保持生成的程序集较小。

添加引用不是必需的,Xml 序列化总是在 .XmlSerializers.dll 程序集上尝试 Assembly.Load()。此外,您永远不会在代码中直接引用生成的 XmlSerializationWriterXxx 和 XmlSerializationReaderXxx 类。它确实有一个优势,当您将项目包含在解决方案中时,构建系统会自动复制程序集。

只有当不同的应用程序对 XML 文件进行序列化和反序列化时,才值得考虑在 GAC 中安装它。您也可以通过手动复制程序集来为其他应用程序提供 .XmlSerializers.dll 程序集。这有点容易出错,在这里使用你自己的判断。检查上一段以了解自动复制的方法。

关于c# - SGEN XMLSerializer - 应该将 .XMLSerializers.dll 添加为对当前项目或 GAC 的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2543641/

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