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

.NET Framework 4.8下DI与Npgsql冲突:System.Threading.Tasks.Extensions加载错误解决问询

解决.NET Framework 4.8 AutoCAD应用中DI与Npgsql的程序集冲突问题

1. 统一更新相关NuGet包

  • 先把System.Threading.Tasks.Extensions更到最新稳定版(比如4.5.4),高版本通常自带向下兼容逻辑。然后重新安装DI和Npgsql包,避免版本残留:
    Uninstall-Package Microsoft.Extensions.DependencyInjection -Force
    Uninstall-Package Npgsql -Force
    Uninstall-Package System.Threading.Tasks.Extensions -Force
    Install-Package System.Threading.Tasks.Extensions -Version 4.5.4
    Install-Package Npgsql
    Install-Package Microsoft.Extensions.DependencyInjection
    

2. 修正程序集绑定重定向配置

  • 注意AutoCAD插件的配置文件必须和插件程序集同名(比如YourPlugin.dll.config),且放在插件目录下才会生效。在配置里覆盖全版本范围的重定向:
    <dependentAssembly>
      <assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
      <bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.1" /> <!-- 替换成你实际安装的版本号 -->
    </dependentAssembly>
    

3. 手动接管程序集加载逻辑

  • 在AutoCAD插件的初始化方法里注册AssemblyResolve事件,强制加载正确路径的程序集:
    public class AutoCADPlugin : IExtensionApplication
    {
        public void Initialize()
        {
            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;
            // 这里初始化DI容器
        }
    
        private Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
        {
            var assemblyName = new AssemblyName(args.Name);
            if (assemblyName.Name == "System.Threading.Tasks.Extensions")
            {
                // 替换成你项目里该dll的实际输出路径
                string assemblyPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "System.Threading.Tasks.Extensions.dll");
                return Assembly.LoadFrom(assemblyPath);
            }
            return null;
        }
    
        public void Terminate() { }
    }
    
  • 确保System.Threading.Tasks.Extensions.dll的NuGet属性设置为Copy Local = True,保证复制到输出目录。

4. 用融合日志查看器定位根源

  • 启动fuslogvw.exe(Visual Studio命令提示符里直接运行),开启“绑定失败日志记录”,重现错误后查看详细日志,确认是文件找不到、版本不匹配还是强名称验证失败,再针对性解决。

5. 降级DI包到.NET Framework兼容版本

  • 部分新版Microsoft.Extensions.DependencyInjection依赖高版本.NET Standard,在4.8里容易出问题,试试降级到3.1.x版本:
    Install-Package Microsoft.Extensions.DependencyInjection -Version 3.1.32
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:32:05