Есть ли способ обновить пакет nuget с несколькими взаимозависимыми зависимостями до более новой версии в старом проекте формата csproj? - PullRequest
1 голос
/ 05 апреля 2019

У нас есть решение Visual Studio с старыми (до VS2017) форматами csproj проектов с зависимостью от Microsoft.TeamFoundationServer.ExtendedClient 15.112.1 , которое имеет значительную долю других (inter ) зависимости это требует.

Проблема в том, что даже в новом автономном проекте невозможно обновить (в VS2017) зависимость до более новой версии 15.131.1 . Всегда возникает ошибка , следующая (независимо от выбранных опций):

PM> Update-Package Microsoft.TeamFoundationServer.ExtendedClient

Attempting to gather dependency information for multiple packages with respect to project 'TestTfsNugetUpdate', targeting '.NETFramework,Version=v4.5'
Gathering dependency information took 6.98 sec
Attempting to resolve dependencies for multiple packages.
Update-Package : Unable to find a version of 'Microsoft.VisualStudio.Services.Client' that is compatible with 'Microsoft.TeamFoundation.DistributedTask.Common 15.112.1 constraint: Microsoft.VisualStudio.Services.Client (= 
15.112.1)'.At line:1 char:1

Хотя тот же автономный проект новый не имеет таких проблем

<Project Sdk="Microsoft.NET.Sdk">    
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net45</TargetFramework>
  </PropertyGroup>    
  <ItemGroup>
    <PackageReference Include="Microsoft.TeamFoundationServer.ExtendedClient" Version="15.112.1" />
  </ItemGroup>    
</Project>

В

Update-Package Microsoft.TeamFoundationServer.ExtendedClient -DependencyVersion Highest
Restoring packages for C:\Projects\TEST\TestTfsNugetUpdate\TestTfsNugetPackage_NewFormat\TestTfsNugetPackage_NewFormat.csproj...
Installing NuGet package Microsoft.TeamFoundationServer.ExtendedClient 15.131.1.
...
Successfully installed 'System.IdentityModel.Tokens.Jwt 5.1.5' to TestTfsNugetPackage_NewFormat
Executing nuget actions took 97.55 ms

Итак, в основном есть способ сделать это в старом формате проекта, не прибегая к ручному / полуавтоматическому удалению и переустановке ExtendedClient с зависимостями (проблема в том, что решение включает в себя множество проектов, которые могут зависеть или не зависеть от TFS DLL, так что я не могу просто удалить + установить его для каждого проекта)?

P.S .: Перенос всего в новый формат - это хорошая идея в любом случае, но сейчас я не хочу этим заниматься.

1 Ответ

1 голос
/ 17 апреля 2019

Есть ли способ обновить пакет nuget с несколькими взаимозависимыми зависимостями до более новой версии в старом проекте формата csproj?

Извините за поздний ответ, я не уверенесли этот ответ вам полезен.

Я мог бы воспроизвести эту проблему на моей стороне, но, похоже, нам нужно удалить и переустановить версию 15.131.1.

Точно так же, как вы сказали,Пакет Microsoft.TeamFoundationServer.ExtendedClient имеет несколько взаимозависимых зависимостей, например:

Microsoft.VisualStudio.Services.Client (= 15.112.1)

Microsoft.TeamFoundationServer.Client (= 15.112.1)

Однако , зависимости Microsoft.TeamFoundationServer.Client также имеют косвенную зависимость Microsoft.VisualStudio.Services.Client (= 15.112.1).Когда мы обновляем пакет Microsoft.TeamFoundationServer.ExtendedClient, nuget сначала обновит пакет Microsoft.VisualStudio.Services.Client (= 15.112.1), но пакет Microsoft.TeamFoundationServer.Client (= 15.112.1) по-прежнему ссылается на него, не позволит нам обновить пакет.

И наоборот.Множество взаимозависимых зависимостей этого пакета образуют тупик, пока мы не сможем его сломать, пока не обновим все зависимости с опцией игнорировать зависимости.

Итак, нам нужно удалить и переустановить версию 15.131.1.

проблема в том, что решение включает в себя множество проектов, которые могут зависеть или не зависеть от DLL-файлов TFS, поэтому я не могу просто удалить + установить его для каждого проекта

Youможно использовать опцию Управление пакетами Nuget для решения ... и установить флажок проекта, будут выбраны все проекты, которые установили этот пакет:

enter image description here

Итак, вам не нужно удалять и переустанавливать пакет для каждого проекта по одному.

Надеюсь, это поможет.

...