bin*_*all 7 c# sgen xml-serialization
我用XMLSerializer类做了一些事情.像大多数初学者一样,我在app start上面临性能问题.我阅读了很多博客,文章,最后使用了SGEN工具.现在性能看起来还不错,但对我来说仍然很少有事情要做.
1)我应该像这样使用SGEN语法:
SGen.exe /assembly:MyAssembly /type:MyRootXmlType
Run Code Online (Sandbox Code Playgroud)
或者它就足够了(我目前使用这种语法,我的程序集中只有一个Serializable类):
SGen.exe /assembly:MyAssembly
Run Code Online (Sandbox Code Playgroud)
什么时候/ type参数在实践中有用?
2)我在MSDN上阅读(http://msdn.microsoft.com/en-us/library/ee704594.aspx)
此命令生成序列化程序集MyAssembly.XmlSerializers.dll,应将其添加为对当前项目或GAC的引用.
但是在所有其他博客和文章上(例如在SO上)我读到这就足以将MyAssembly.XmlSerializers.dll放入MyAssembly存在的文件夹中.
什么是对的?
3)只需生成.XmlSerilizers.dll并将其与MyAssembly一起部署就足够了,还是应该在我的代码中添加一些东西?
我不这么认为,但我想确保我不必更改我的代码并且"魔法"会自动发生.
如果不对sgen.exe使用/ type参数,则它将为程序集中的所有公共类型生成de/serialization代码.请注意,[序列化]属性不用于XML序列化.我怀疑你是否想要这个,使用/ type来保持生成的组件很小.
无需添加引用,Xml序列化总是尝试在.XmlSerializers.dll程序集上使用Assembly.Load().另外,您永远不会在代码中直接引用生成的XmlSerializationWriterXxx和XmlSerializationReaderXxx类.它确实有一个优点,当您在解决方案中包含项目时,构建系统将自动复制程序集.
只有当不同的应用程序序列化和反序列化XML文件时,才能在GAC中安装它.您也可以通过手动复制程序集为其他应用程序提供.XmlSerializers.dll程序集.哪个有点容易出错,请在此处使用您自己的判断.检查上一段是否有自动复制的方法.
| 归档时间: |
|
| 查看次数: |
5274 次 |
| 最近记录: |