【问题标题】:CakeBuild: Get failed to install tool 'NUnit.ConsoleRunner'CakeBuild:安装工具“NUnit.ConsoleRunner”失败
【发布时间】:2017-08-30 16:43:54
【问题描述】:

我使用 CakeBuild 来构建和测试我的 Xamarin 可移植类库。

在 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 是如何被调用的,stackoverflow.com/questions/38658660/…
  • 见上文,我将输出添加到原始问题中
  • 什么版本的 NuGet exe?因为它无法解决包。无论如何,对于可复制的构建,我建议固定一个版本。
  • NuGet 版本是版本:4.1.0.2450。由 CakeBuild 自动下载。

标签: nunit-console cakebuild


【解决方案1】:

现在我发现了我的问题并解决了。

问题在于 NuGet.exe 没有指向公共 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 之后,一切正常。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-28
    • 2021-10-06
    • 2017-10-26
    • 1970-01-01
    • 2021-08-16
    相关资源
    最近更新 更多