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

.NET 4.5 API安装Open XML SDK v20.0.0后出现编译错误求助

解决CS1685: CallerMemberNameAttribute重复定义编译错误

问题根源

DocumentFormat.OpenXml v20.0.0 针对较新版本的.NET平台开发,其依赖的.NET标准库组件会引入包含CallerMemberNameAttribute的程序集,而.NET Framework 4.5的mscorlib.dll本身已定义该属性,两者冲突导致编译报错。

解决方案

1. 降级Open XML SDK版本(推荐)

v20.0.0对.NET Framework 4.5兼容性不佳,降级到v2.18.0(官方明确支持.NET Framework 4.5的最后一个稳定版本):

  • 在NuGet包管理器中卸载当前的DocumentFormat.OpenXml
  • 执行安装命令:Install-Package DocumentFormat.OpenXml -Version 2.18.0

2. 配置程序集绑定重定向(适用于必须使用高版本的场景)

在Web.config/App.config中添加绑定重定向,强制使用mscorlib中的属性定义:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="4.0.4.1" />
      </dependentAssembly>
      <!-- 若存在其他冲突程序集,按相同格式添加重定向规则 -->
    </assemblyBinding>
  </runtime>
</configuration>

若仍有警告转错误的问题,可在项目文件(.csproj)中临时禁用该警告:

<PropertyGroup>
  <NoWarn>$(NoWarn);CS1685</NoWarn>
</PropertyGroup>

3. 清理冗余引用

右键项目→引用,检查是否存在重复的System.Runtime相关程序集,删除不必要的引用,确保仅保留.NET Framework 4.5自带的mscorlib和System组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:14:56