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

目标框架为.NET6却引入.NETCoreApp3.0运行时文件的问题排查

.NET6输出目录出现.NETCoreApp3.0版本System.Drawing.Common.dll的原因及解决方法

原因

  • 间接依赖引入:你没有直接引用System.Drawing.Common.dll,但项目依赖的某个NuGet包(比如涉及图像处理、报表生成的第三方库)在其依赖链中包含了针对.NET Core 3.0的该组件。NuGet的依赖解析机制会拉取满足目标框架最低兼容要求的依赖版本,若依赖包未针对.NET 6做适配,就会把旧版库文件带入输出目录的runtimes子文件夹。
  • 运行时特定库分发:System.Drawing.Common是平台特定组件,.NET 6对其在Unix平台有特殊处理逻辑。部分第三方包未更新依赖配置,依然引用旧版的Unix运行时特定库,导致构建时被拷贝到对应路径下。

解决方法

  • 排查并升级依赖:执行dotnet list package --include-transitive命令,列出所有间接依赖,定位到引入旧版System.Drawing.Common的包,查看该包是否有.NET 6兼容的新版本,直接升级即可解决。
  • 强制指定兼容版本:在项目的.csproj文件中直接添加System.Drawing.Common的引用,指定与.NET 6匹配的版本(如6.0.x),NuGet会优先使用这个版本覆盖间接引入的旧版本:
    <PackageReference Include="System.Drawing.Common" Version="6.0.0" />
    
  • 清理缓存与输出:执行dotnet clean清理当前项目输出,再运行dotnet nuget locals all --clear清除NuGet本地缓存,之后重新构建项目,避免旧版本库文件残留。
  • 排除不必要的运行时文件:如果你的项目不需要在Unix平台运行,可以在.csproj中添加规则,阻止该旧版Unix库被拷贝到输出目录:
    <ItemGroup>
      <Content Remove="runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll" />
      <None Include="runtimes/unix/lib/netcoreapp3.0/System.Drawing.Common.dll" Exclude="**" />
    </ItemGroup>
    

内容的提问来源于stack exchange,提问作者Arun Prakash Nagendran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 12:17:53