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

.NET6自定义控件被应用或直接引用DLL时如何自动还原NuGet包?

.NET6自定义控件的NuGet自动还原方案

一、通过NuGet包引用自定义控件时的自动还原

直接引用NuGet包的场景下,NuGet默认会自动处理依赖还原,只需确保你的自定义控件NuGet包打包正确:

  • 确保自定义控件项目的.csproj文件中,所有依赖项都通过<PackageReference>正确声明,比如System.Drawing.Common这类依赖
  • 打包NuGet时,项目里的依赖会自动被包含到生成的包元数据中,引用该包的.NET6应用在执行dotnet restore(或VS自动触发还原)时,会自动拉取所有依赖包
  • 若还原异常,可手动执行dotnet restore命令,或在Visual Studio中右键解决方案选择「还原NuGet包」强制触发

二、直接引用自定义控件DLL时的自动还原

直接引用DLL属于非常规做法,因为DLL本身不携带依赖管理元数据,NuGet无法自动识别依赖,需通过以下方式处理:

方法1:手动添加缺失依赖

针对报错的System.Drawing.Common,直接在引用DLL的.NET6应用的.csproj中添加对应的包引用:

<PackageReference Include="System.Drawing.Common" Version="6.0.0" />

这种方式简单直接,适用于依赖较少的场景。

方法2:利用.deps.json文件

将自定义控件生成的.deps.json文件(和DLL同目录)一起复制到应用的输出目录。MSBuild在构建应用时会读取该文件中的依赖清单,自动尝试还原对应的NuGet包。需注意确保应用项目的构建流程中包含对该文件的复制操作,或手动复制到正确位置。

方法3:转为NuGet包引用(推荐)

直接引用DLL容易引发依赖缺失、版本冲突等问题,建议将自定义控件打包为标准NuGet包,利用NuGet成熟的依赖管理机制自动处理还原,从根源避免这类问题。

针对System.Drawing.Common缺失错误的修复细节

从你提供的.deps.json内容来看,Manufacturer.ProductName/1.0.0的依赖列表中缺少System.Drawing.Common,这是导致报错的直接原因:

  1. 打开自定义控件的项目,添加对System.Drawing.Common的包引用:
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
  1. 重新生成项目,此时.deps.json会自动新增该依赖项
  2. 若用NuGet包,重新打包发布;若直接引用DLL,将新生成的DLL和.deps.json一起复制到应用项目中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 22:21:03