我有一个名为 .NET 的应用程序Application
。
此应用程序依赖于两个 NuGet 包:
Database
, 版本 2.*Logging
, 版本 3.*
该Database
软件包依赖于两个附加软件包:
DTO
, 版本 1.*DAL
, 版本 4.*
目前,Application
使用这些具体的包版本:Database
2.1Logging
版、3.1 版。
我构建我的Application
,NuGet 解析并下载依赖项,所以我得到DTO
版本 1.5 和DAL
版本 4.0。我将我Application
的安装包放入并交付给我的客户。我在 git 中用app-1.0
.
所以我的客户得到以下二进制文件:
Application.exe
, 版本 1.0Database.dll
, 2.1 版Logging.dll
, 版本 3.1DTO.dll
, 1.5 版DAL.dll
, 4.0 版
一年后,客户提交了一个我需要彻底分析的错误。为了重现该问题,我需要与客户相同的二进制文件,因此我检查了标签app-1.0
并想要构建我的应用程序。
同时,在 NuGet 源上更新了DAL
和包:最新版本为 1.7,版本为 4.5。DTO
DTO
DAL
我的问题是:
- 当我现在构建我的应用程序时,NuGet 是否会将
Database
依赖关系解析为最新的可用版本?我也得到了DTO 1.7
,DAL 4.5
而不是DTO 1.5
andDAL 4.0
(用于构建app-1.0
)? - 如果是,我如何使用 NuGet 确保我的版本的二进制重现性?
- 如果不是,NuGet 如何解决“正确”的引用?