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

VS V16.4.1调试.NET Framework4.7.1项目时加载System.Collections.Immutable失败

解决调试时Roslyn csc.exe无法加载System.Collections.Immutable的问题

我之前也碰到过类似的Roslyn编译器依赖问题,尤其是在.NET Framework项目里调试时触发的,给你几个针对性的解决方案,按顺序试试:

  • 优先用NuGet包替代手动DLL引用
    手动添加DLL经常会出现版本不匹配或者Roslyn无法识别的问题,直接在NuGet包管理器中搜索并安装System.Collections.Immutable,指定版本为1.2.3.0。安装完成后,检查项目的引用属性,确保“复制本地”设置为True,这样DLL会被复制到输出目录。

  • 检查并修复Roslyn编译器包的依赖
    你的项目可能引用了Microsoft.CodeDom.Providers.DotNetCompilerPlatform这个包(它负责在项目中嵌入Roslyn编译器),这个包本身依赖特定版本的System.Collections.Immutable。可以尝试:

    1. 在NuGet包管理器中更新这个包到适配.NET Framework 4.7.1的最新兼容版本
    2. 如果更新后还是有问题,卸载这个包然后重新安装,让NuGet自动处理依赖关系
  • 添加程序集绑定重定向
    版本冲突是这类问题的常见原因,在项目的app.config(或web.config)中添加绑定重定向,强制所有版本的System.Collections.Immutable指向你安装的1.2.3.0版本:

    <configuration>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="System.Collections.Immutable" 
                              publicKeyToken="b03f5f7f11d50a3a" 
                              culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-1.2.3.0" 
                            newVersion="1.2.3.0" />
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
    </configuration>
    
  • 彻底清理并重建Roslyn相关文件
    之前删bin/obj可能不够,需要额外删除项目输出目录下的bin\roslyn文件夹(这个文件夹里是Roslyn的编译器文件),然后:

    1. 在VS中执行“清理解决方案”
    2. 右键项目选择“还原NuGet包”
    3. 重新构建解决方案
  • 检查VS组件完整性
    如果上面的方法都没用,可能是VS 16.4.1本身的Roslyn组件损坏了。打开Visual Studio安装器,选择你的VS安装实例,点击“修改”,然后选择“修复”选项,让安装器修复缺失或损坏的组件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 23:37:41