我们有一个Visual Studio解决方案,其格式为old(pre VS2017),csproj项目具有对Microsoft.TeamFoundationServer.ExtendedClient 15.112.1的依赖关系,该项目具有相当数量的其他(相互)依赖关系。
问题在于,即使在新的独立项目中,也无法将(依赖项)更新(在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
虽然同一个独立的new格式项目没有此类问题
<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 .:在任何情况下,将所有内容移植到新格式都是一个不错的主意,但这不是我目前想做的事情。
答案 0 :(得分:1)
在旧的csproj格式项目中,是否可以将具有多个相互依存关系的nuget软件包更新到新版本?
很抱歉收到这么晚的答复,不确定该答案是否对您有帮助。
我可以重现此问题,但似乎我们必须卸载并重新安装版本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)
仍引用它,将阻止我们更新软件包。
相反是相同的。此程序包的多个相互依赖的依赖关系形成了死锁,除非暂时使用选项ignore依赖关系升级每个依赖关系,否则我们暂时无法打破僵局。
因此,我们必须卸载并重新安装版本15.131.1
。
问题在于该解决方案包括很多项目,这些项目可能 或可能不依赖于TFS dll,所以我不能只删除+安装 每个项目
您可以使用选项为解决方案管理Nuget软件包... ,然后选中项目复选框,将选择所有安装该软件包的项目:
因此,您不需要一个个地卸载并重新安装每个项目的软件包。
希望这会有所帮助。