[英]Nuget.exe and NuGet Package Manager resolve different dependencies
我想將OPCFoundation.NetStandard.Opc.Ua
版本1.4.355.26
(及其所有依賴項)安裝到脫機計算機上。 我的在線和離線計算機都運行Visual Studio 2019 16.1.3
。
當我使用NuGet Package Manager
安裝OPCFoundation.NetStandard.Opc.Ua
版本1.4.355.26
,它會安裝許多依賴項,包括Libuv.1.10.0
。 看截圖:
當我下載相同的軟件包進行脫機安裝時, nuget.exe
獲取Libuv.1.9.2
。 看截圖:
C:\Users\cstankevitz\Downloads>nuget.exe install OPCFoundation.NetStandard.Opc.Ua
Feeds used:
https://api.nuget.org/v3/index.json
C:\Program Files (x86)\Microsoft SDKs\NuGetPackages\
Installing package 'OPCFoundation.NetStandard.Opc.Ua' to 'C:\Users\cstankevitz\Downloads'.
GET https://api.nuget.org/v3/registration3-gz-semver2/opcfoundation.netstandard.opc.ua/index.json
OK https://api.nuget.org/v3/registration3-gz-semver2/opcfoundation.netstandard.opc.ua/index.json 558ms
Attempting to gather dependency information for package 'OPCFoundation.NetStandard.Opc.Ua.1.4.355.26' with respect to project 'C:\Users\cstankevitz\Downloads', targeting 'Any,Version=v0.0'
Gathering dependency information took 16.89 sec
Attempting to resolve dependencies for package 'OPCFoundation.NetStandard.Opc.Ua.1.4.355.26' with DependencyBehavior 'Lowest'
Resolving dependency information took 0 ms
Resolving actions to install package 'OPCFoundation.NetStandard.Opc.Ua.1.4.355.26'
Resolved actions to install package 'OPCFoundation.NetStandard.Opc.Ua.1.4.355.26'
Retrieving package 'Libuv 1.9.2' from 'nuget.org'.
...
當然,當我將下載的軟件包帶到脫機計算機上並使用Visual Studio 2019 NuGet Package Manager
安裝它們時,安裝將失敗,因為Libuv.1.10.0
不可用。
如何獲取nuget.exe
(或任何其他工具)以下載NuGet Package Manager
進行脫機安裝所需的正確軟件包?
如果在VS中查看“預覽更改”對話框的輸出,則所有Microsoft.AspNetCore
軟件包的版本均為2.0.1,而運行nuget.exe
版本為1.1.x。 如果您在OPCFoundation.NetStandard.Opc.Ua
上查看OPCFoundation.NetStandard.Opc.Ua並展開依賴關系,則會看到它對net46
和netstandard2.0
的1.1包具有依賴關系,而對netstandard2.0
2.0依賴關系具有依賴關系。
由此我可以推斷出您的項目正在使用netcoreapp2.0
, netstandard2.0
或更高版本,而nuget.exe
可能正在使用某些.NET Framework進行依賴。
至於獲取項目實際使用的相同軟件包的方法,我過去已經回答了幾次這個問題,通常我會鏈接到我第一次回答它的時候
這是我如何為離線系統安裝正確的依賴項:
PackageTools.cs
並修改函數GetRangedPackageVersion
,使其包含以下代碼。 這是修復“錯誤”所必需的,在該“錯誤”中,當有較新的軟件包可用時,不會下載較舊的軟件包-但在下面的步驟9中將需要較舊的軟件包。 NuGetDependencyDownloader
以下載軟件包及其依賴項 c:\\Work\\2019-07018 Nuget Offline\\
) Nuget Package Manager | Package Sources
選項Nuget Package Manager | Package Sources
Nuget Package Manager | Package Sources
。 添加一個指向步驟5中使用的目錄的源。 指定本地包源屏幕截圖 Nuget Package Manager
。 Package source
。 指定Package Source屏幕截圖 private IPackage GetRangedPackageVersion(IQueryable<IPackage> packages, IVersionSpec versionSpec)
{
packages = packages.Where(o => o.Version == versionSpec.MinVersion);
IPackage package = packages
.OrderByDescending(o => o.Version)
.FirstOrDefault();
return package;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.