'Newtonsoft.Json'已经在TFS构建中为'Microsoft.CSharp'定义了依赖项

时间:2018-12-14 16:55:21

标签: tfs nuget tfsbuild nuget-package

我有一个使用 .NET 4.6.1 实现的项目。我使用TFS构建该项目。构建任务之一是从该项目中创建一个nuget包,因为它包含其他项目使用的共享代码。我最近需要将 Newtonsoft.Json 的版本从v9.0.1升级到v12.0.1(我添加了一些新功能,迫使我升级了Newtonsoft.Json的版本)。

我现在收到错误'Newtonsoft.Json'已经在创建nuget包的构建任务中为'Microsoft.CSharp'定义了依赖项。

这是用于创建nuget包的build命令。

NuGet.exe pack "Common.csproj" -OutputDirectory "\packages\Common" -Properties Configuration=Release -version 1.2.3.4

这是packages.config文件。

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.IdentityModel.Logging" version="1.1.2" targetFramework="net461" />
  <package id="Microsoft.IdentityModel.Tokens" version="5.1.2" targetFramework="net461" />
  <package id="Newtonsoft.Json" version="12.0.1" targetFramework="net461"  />
  <package id="Sendgrid" version="9.9.0" targetFramework="net452" />
  <package id="System.IdentityModel.Tokens.Jwt" version="5.1.2" targetFramework="net461" />
  <package id="System.Net.Http" version="4.0.0" targetFramework="net452" />
  <package id="Twilio" version="5.23.0" targetFramework="net461" />
</packages>

我看过了这个question,但是这些答案都不适用。

我们的构建服务器正在使用nuget版本3.2.1.10581

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的其他人:

  • Nuget:5.4.0
  • Newtonsoft.Json:12.0.3
  • Azure Devops Server(prem):2019
  • Visual Studio 2019:16.5.2

我们在生成服务器上更新了Visual Studio,这破坏了Nuget还原。我们发现我们需要在任务列表的开头添加一个名为NuGet Tool Installer的任务,以使其强制使用5.4.0版本,因为自动发现选择的是较旧的版本并失败了。

Nuget Tool Installer

此功能正常运行并还原了软件包后,便无法打包我们的源以进行分发。因此,我们拥有NewtonSoft.Json的最新的NuGet.exe,.NET Framework参考(即不是netstandard),但仍然无法正常工作。我们以前使用的是NuGet Packager。我不能完全确定何时不建议使用该任务,但是直到VS更新,它仍然对我们有用。有一个名为NuGet的新任务,其中包含用于不同功能的下拉菜单。

NuGet

选择Pack,并配置字段以模仿不推荐使用的任务导致成功构建的内容。