You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8.0 WPF初始化StringCollection时遇XmlSerializers加载失败问题

解决.NET 8 WPF中StringCollection初始化引发的XmlSerializers程序集找不到问题

问题场景

在目标框架为.NET 8.0的WPF应用中,当在Settings里使用System.Collections.Specialized.StringCollection类型,尝试通过new StringCollection()初始化Properties.Settings.Default对应值时,抛出错误:

System.IO.FileNotFoundException: 'Could not load file or assembly 'System.Collections.Specialized.XmlSerializers, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL'. The system cannot find the file specified.'

即使已在项目文件中添加<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>配置,问题依然存在。

解决方案

1. 替换为List<string>类型(最简便)

StringCollection是较旧的非泛型集合,其序列化依赖专门的XmlSerializers程序集。改用List<string>作为Settings的类型:

  • 打开Settings设计器,删除原有的StringCollection类型设置项
  • 添加新设置项,类型选择System.Collections.Generic.List<string>,范围设为User
  • 初始化时直接用new List<string>(),无需额外处理序列化程序集,完全规避该问题

2. 手动生成所需的XmlSerializers程序集

如果必须使用StringCollection,可以通过.NET SDK自带的sgen.exe工具生成对应的序列化程序集:

  • 找到.NET 8对应的sgen.exe路径,通常位于C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.x\ref\net8.0附近(根据你的SDK安装路径调整)
  • 打开命令提示符,执行命令:
    sgen.exe /assembly:System.Collections.Specialized.dll
    
  • 将生成的System.Collections.Specialized.XmlSerializers.dll复制到你的WPF应用输出目录(如bin\Debug\net8.0-windows)

3. 调整项目序列化配置并启用绑定重定向

修改项目文件(.csproj)中的配置,替换原有的<GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>为:

<GenerateSerializationAssemblies>On</GenerateSerializationAssemblies>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
  • 清理并重新生成项目,VS会自动生成必要的序列化程序集和绑定重定向配置,解决程序集加载问题

4. 修改Settings的序列化模式

在Settings设计器中,选中StringCollection类型的设置项,查看属性窗口中的序列化模式(Serialization Mode),将其从Xml改为Binary:

  • 这种方式会使用二进制序列化替代Xml序列化,不再依赖XmlSerializers程序集
  • 注意:二进制序列化的Settings数据无法直接编辑配置文件,需通过代码读写

内容的提问来源于stack exchange,提问作者AeroClassics

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 00:22:03