CakeBuild:获取工具安装失败 'NUnit.ConsoleRunner'

CakeBuild: Get failed to install tool 'NUnit.ConsoleRunner'

我使用 CakeBuild 构建和测试我的 Xamarin 便携式 Class 库。

在 build.cake 脚本中,我定义了我想使用 NUnit-Console 来 运行 我的测试用例。所以我

#tool nuget:?package=NUnit.ConsoleRunner

不幸的是,当我 运行 Cake 脚本时出现以下错误。

Preparing to run build script...
VERBOSE: Restoring tools from NuGet...
VERBOSE: Feeds used:
  C:\Users\bergkar\.nuget\packages\

All packages listed in C:\dev\Xamarin\fleetboard-core-library\tools\packages.config are already installed.
Running build script...
Analyzing build script...
Processing build script...
Installing tools...
Unable to find package 'NUnit.ConsoleRunner'
NuGet exited with 1
Could not find any relevant files for tool 'NUnit.ConsoleRunner'. Perhaps you need an include parameter?
Error: Failed to install tool 'NUnit.ConsoleRunner'.

当我添加一个我想使用的特定版本时,一切正常。

#tool nuget:?package=NUnit.ConsoleRunner&version=3.7.0

有人能告诉我为什么没有版本的东西它不能工作吗?

使用“.\build.ps1 -Verbosity Diagnostic”我得到以下输出:

Preparing to run build script...
Running build script...
Module directory does not exist.
Analyzing build script...
Analyzing C:/dev/Xamarin/fleetboard-core-library/build.cake...
Processing build script...
Installing tools...
Installing NuGet package NUnit.ConsoleRunner...
Executing: "C:/dev/Xamarin/fleetboard-core-library/tools/nuget.exe" install "NUnit.ConsoleRunner" -OutputDirectory "C:/d
ev/Xamarin/fleetboard-core-library/tools" -ExcludeVersion -NonInteractive
Unable to find package 'NUnit.ConsoleRunner'
NuGet exited with 1
Feeds used:

Output:
Feeds used:

Could not find any relevant files for tool 'NUnit.ConsoleRunner'. Perhaps you need an include parameter?
Error: Cake.Core.CakeException: Failed to install tool 'NUnit.ConsoleRunner'.
   at Cake.Core.Scripting.ScriptProcessor.InstallTools(ScriptAnalyzerResult analyzerResult, DirectoryPath installPath)
   at Cake.Core.Scripting.ScriptRunner.Run(IScriptHost host, FilePath scriptPath, IDictionary`2 arguments)
   at Cake.Commands.BuildCommand.Execute(CakeOptions options)
   at Cake.CakeApplication.Run(CakeOptions options)
   at Cake.Program.Main()

现在我找到了我的问题并解决了。

问题是 NuGet.exe 没有指向 public nuget 源的源提要,例如“https://api.nuget.org/v3/index.json”。

这是因为我在 "C:\Users\YOUR_USER_HOME\AppData\Roaming\NuGet" 下的默认 NuGet.conf 没有定义 packageSource。所以 Nuget 只知道 "C:\Users\YOUR_USER_HOME.nuget\packages" 下的本地 nuget 包缓存,这不包括指定的包。

所以在 "C:\Users\YOUR_USER_HOME\AppData\Roaming\NuGet\NuGet.Conf" 中添加 packageSource 后一切正常。

另一种方法是在构建旁边添加一个新的 NuGet.Conf。ps1 文件,其中包含 CakeBuild 和 Xamarin 项目所需的所有包源。

下一页解释了 Nuget 如何找到它的配置。也许这有助于理解 NuGet 用于查找其配置的机制: https://docs.microsoft.com/en-us/nuget/consume-packages/configuring-nuget-behavior