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

PostSharp版本不匹配:构建解决方案时遇程序集加载异常

解决PostSharp版本不匹配导致的AssemblyLoadException

先把你遇到的异常信息明确下来,方便后续排查:

Unhandled exception (4.1.20.0, postsharp.srv.4.0-x86.exe, CLR 4.0.30319.461308, Release): PostSharp.Sdk.CodeModel.AssemblyLoadException: 找不到程序集‘postsharp, version=5.0.42.0, culture=neutral, publickeytoken=b13fd38b8f9c99d7’。[版本不匹配]

从你说已经配置了绑定重定向来看,大概率是配置不完整或者没作用到正确的地方,试试下面这几个亲测有效的步骤:

1. 补全项目app.config的绑定重定向配置

你提到的配置片段里oldVersion只写到了4....,这会导致高版本(比如报错的5.0.42)的重定向规则不生效。把配置补全成这样:

<dependentAssembly>
  <assemblyIdentity name="PostSharp" publicKeyToken="b13fd38b8f9c99d7" culture="neutral" />
  <!-- oldVersion覆盖到报错的5.0.42版本,newVersion设为你项目实际使用的4.1.20 -->
  <bindingRedirect oldVersion="0.0.0.0-5.0.42.0" newVersion="4.1.20.0" />
</dependentAssembly>

2. 给PostSharp服务进程的配置文件加重定向

这个异常是来自postsharp.srv.4.0-x86.exe这个PostSharp后台服务进程,它会读取自己的配置文件,而非你项目的app.config:

  • 找到PostSharp的安装目录,一般是C:\Program Files (x86)\PostSharp\4.1.20\bin(版本号对应你的4.1.20)
  • 打开postsharp.srv.4.0-x86.exe.config,在<runtime>节点下添加和上面完全一致的绑定重定向配置

3. 排查项目依赖的间接引用

有可能是你项目里某个NuGet包间接引用了PostSharp 5.0.42版本,导致编译时触发版本查找:

  • 打开NuGet包管理器,查看所有项目的依赖项,找有没有引用高版本PostSharp的包
  • 要么把主项目的PostSharp升级到5.0.42版本(保持全局版本一致),要么降级那个依赖包的版本

4. 清理缓存后重新编译

最后别忘了清理项目的bin和obj目录,重启Visual Studio再重新编译——旧的编译缓存经常会导致这种奇怪的版本冲突问题。

内容的提问来源于stack exchange,提问作者Rea B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:18:39