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

如何解决.NET Framework 4.6.1中Roslyn的BindingRedirect失效问题

问题分析与解决方案

嘿,我一眼就瞅出你遇到的核心问题了——.NET Framework里程序集绑定重定向只认启动项目(也就是你的EXE)的配置文件,类库项目的app.config根本不会被进程加载,哪怕你在里面写了一堆重定向规则也白搭!这就是你手动复制4.0.1.0版本才能运行的根本原因。下面给你一步步解决的方案:

1. 把自动生成重定向的配置移到启动项目

你提到类库项目开了<AutoGenerateBindingRedirects>和<GenerateBindingRedirectsOutputType>,但这俩配置得加到EXE项目的.csproj里才有用,类库的这些设置不会帮EXE生成正确的重定向规则。操作步骤:

  • 右键你的EXE项目 → 卸载项目 → 编辑.csproj
  • 找到<PropertyGroup>节点,添加(或修改):
    <AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
    <GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
    
  • 重新加载项目,清理整个解决方案后重新生成

2. 手动合并类库的重定向规则到EXE的配置

如果自动生成还是没搞定Roslyn相关的.NET Standard兼容程序集(比如System.IO.FileSystem)的重定向,直接把类库app.config里<runtime><assemblyBinding>下的所有规则,复制到EXE项目的App.config对应的节点里。比如针对System.IO.FileSystem,你可以写死覆盖所有旧版本到你实际安装的NuGet版本:

<dependentAssembly>
  <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>

(记得把newVersion改成你实际安装的NuGet包版本,比如你说的4.3.0)

3. 确认Roslyn包的复制本地设置

你说Roslyn的DLL都设了本地复制,再仔细检查下:

  • 右键类库项目里的Microsoft.CodeAnalysis.CSharp等NuGet引用 → 属性 → 确保复制本地是True
  • 彻底删除所有项目的bin和obj目录,重新生成,确保EXE的输出目录里有正确版本的Roslyn及其依赖DLL

4. 强制忽略发布者策略(解决MSBuild取旧版本的问题)

你提到MSBuild从VS的MSBuild扩展目录取了4.0.3.0的System.IO.FileSystem,这是因为.NET Framework 4.6.1的兼容包自带了这些程序集。可以在EXE的App.config里添加publisherPolicy设置,强制忽略发布者策略,用你指定的版本:

<dependentAssembly>
  <assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
  <publisherPolicy apply="no" />
  <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
</dependentAssembly>

5. 用工具验证重定向是否生效

如果还是有问题,用fuslogvw.exe(程序集绑定日志查看器)排查:

  • 打开VS的开发者命令提示符,直接输入fuslogvw运行
  • 勾选启用程序集绑定失败日志(正常)
  • 运行你的EXE,查看生成的日志,就能清楚看到程序集加载时用了哪个版本,以及重定向规则是否被正确应用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 06:23:32