无法找到DevExpress 16.2.5.0版本包,NuGet还原失败求助
问题描述
接手第三方.NET项目,依赖DevExpress 16.2.5.0版本,在Visual Studio 2022中构建时反复出现「NuGet Package restore failed」错误,提示无法找到DevExpress.BonusSkins.16.2.5.0、DevExpress.Sparkline.Core.16.2.5.0等多个指定版本包。已配置8个NuGet包源,但问题依旧。尝试下载安装DevExpress 16.2.5版本,安装后生成的DLL仅带有16.2后缀,而非项目要求的16.2.5.0。
项目的packages.config内容如下:
<?xml version="1.0" encoding="utf-8"?> <packages> <package id="DevExpress.BonusSkins" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Data" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Office.Core" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Pdf.Core" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Printing.Core" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.RichEdit.Core" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Sparkline.Core" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Utils" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.Xpo" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraBars" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraEditors" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraGrid" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraLayout" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraPrinting" version="16.2.5.0" targetFramework="net46" /> <package id="DevExpress.XtraTreeList" version="16.2.5.0" targetFramework="net46" /> <package id="NLog" version="4.5.8" targetFramework="net46" /> </packages>
错误提示截图:

解决方法
配置DevExpress官方私有NuGet源
DevExpress 16.2.x这类旧版本包不在公共NuGet源,必须使用官方授权的私有源。打开Visual Studio「工具」→「选项」→「NuGet包管理器」→「包源」,添加源地址:https://nuget.devexpress.com/{你的授权密钥}/api
替换{你的授权密钥}为有效的DevExpress授权密钥,旧版本包需对应授权才能访问。手动打包本地DLL为NuGet包
若无法通过NuGet源获取,可手动将本地安装的DevExpress DLL打包:- 找到DevExpress 16.2.5安装目录,默认路径类似
C:\Program Files (x86)\DevExpress 16.2\Components\Bin\Framework - 使用NuGet命令行生成包模板:
编辑生成的nuget spec DevExpress.BonusSkins.nuspec文件,指定版本为16.2.5.0并添加对应DLL文件 - 将生成的
.nupkg文件放入本地NuGet包源目录,在VS中选择该源进行还原。
- 找到DevExpress 16.2.5安装目录,默认路径类似
修改版本号匹配本地DLL
本地安装的DevExpress DLL文件版本可能显示为16.2.0.0(内部版本实际为16.2.5),可修改packages.config中的版本号为16.2.0.0,然后手动将本地DLL复制到项目packages目录对应位置,重新构建。切换兼容版本的Visual Studio
DevExpress 16.2.5发布于2017年,VS2022对旧版.NET Framework项目兼容性有限。可先在VS2017/2019中打开项目完成NuGet还原,再回到VS2022构建。
内容的提问来源于stack exchange,提问作者Yash Dutt

