Меня смущает то, как разрешаются зависимости при использовании спецификации зависимостей на основе группы в NuGet.
У меня есть проект Visual Studio, нацеленный на .NET Framework 4.6.1, сзависимость NuGet от пакета NuGet (внутренняя для моей компании):
Это файл packages.config
моего проекта:
<package id="Name.Of.My.Package" version="2.0.65" targetFramework="net461" />
И этов файле .csproj
:
<Reference Include="Name.Of.My.Package, Version=0.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Name.Of.My.Package.2.0.65\lib\net45\Name.Of.My.Package.dll</HintPath>
</Reference>
Этот пакет является многоцелевым пакетом со спецификацией зависимости на основе группы, которая выглядит так, когда я получаю ее прямо из *Файл 1019 *, полученный путем открытия файла packages\Name.Of.My.Package.nupkg
в виде архива:
<dependencies>
<group>
<dependency id="Newtonsoft.Json" version="11.0.2" />
</group>
<group targetFramework=".NETFramework4.0">
<dependency id="Microsoft.Bcl.Async" version="1.0.168" />
</group>
</dependencies>
И папка packages\Name.Of.My.Package\lib
содержит:
- net40
- net45
- nestandard2.0
Итак, я понимаю, что, поскольку мой проект находится в net461, ссылка должна быть добавлена в версию net45 моего пакета (каккажется, имеет место, если я смотрю на файл .csproj), но что более важно, что единственныйнеявная зависимость должна быть от Newtonsoft.
Но это происходит, когда я пытаюсь удалить пакет Microsoft.Bcl.Async
в консоли диспетчера пакетов:
Uninstall-Package Microsoft.Bcl.Async
Attempting to gather dependency information for package 'Microsoft.Bcl.Async.1.0.168' with respect to project 'Name.Of.My.Project', targeting '.NETFramework,Version=v4.6.1'
Resolving actions to uninstall package 'Microsoft.Bcl.Async.1.0.168'
Uninstall-Package : Unable to uninstall 'Microsoft.Bcl.Async.1.0.168' because 'Name.Of.My.Package.2.0.65' depends on it.
Это происходитв последней версии Visual Studio 2017 (15.8.6).