自动生成 XML 序列化程序集
问题:
使用 XmlSerializer 时,由于缺少序列化程序集而发生异常。为什么 Visual Studio 设置“生成序列化程序集”无法解决此问题,以及如何解决?
答案:
仅靠“生成序列化程序集”设置是不够的,因为 SGen 任务会将“/proxytypes”开关添加到 sgen.exe 命令行,从而阻止在没有代理类型的情况下生成序列化程序集。
为了解决这个问题,Microsoft 引入了“SGenUseProxyTypes” MSBuild 属性,允许您禁用“/proxytypes”开关。以下是使用方法:
步骤 1:禁用代理类型生成
在导入 Microsoft.Common.Targets 或 C#/VB.targets 之前,将以下属性添加到您的项目文件中:
<code class="language-xml"><sgenuseproxytypes>false</sgenuseproxytypes></code>
步骤 2:启用序列化程序集生成
确保在项目属性中启用了“生成序列化程序集”设置。
修改后的项目文件配置:
<code class="language-xml"><PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies> <SGenUseProxyTypes>false</SGenUseProxyTypes> </PropertyGroup> <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> <GenerateSerializationAssemblies>On</GenerateSerializationAssemblies> <SGenUseProxyTypes>false</SGenUseProxyTypes> </PropertyGroup></code>
进行这些更改后,Visual Studio 将自动生成 Xml 序列化程序集,无需手动干预。
以上是为什么'生成序列化程序集”不能始终与 XmlSerializer 配合使用,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!