0

我正在 Jenkins 中构建一个 Selenium/Specflow 项目,并希望通过 Nuget.exe CLI 获取当前安装的 NUnit Console Runner 包版本。

我必须在我的 Jenkins 构建中引用 NUnit Console Runner 包文件夹路径才能运行 NUnit 测试。文件夹名称中包含版本,而不是随着版本更改而更改的硬编码路径,我想获取包的当前版本并使用它来动态构建路径。

我已经阅读了许多解释如何在 Powershell 和 Visual Studio 客户端中获取版本的问题,但我还没有在任何地方看到解释如何使用 nuget.exe 获取此信息的解决方案。我的 Jenkins 构建的其余部分正在使用 nuget.exe,并且我有自动更新,所以我想尽可能使用它。

我尝试使用 List 命令,但它没有引用 Local,因为 Local 不是注册源。

C:\Program Files\nuget>nuget list nunit -source local
The specified source 'local' is invalid. Please provide a valid source.

如果我使用活动源运行它,我会在远程 Nuget 存储库中获得标题中带有 nunit 的所有内容,这不是我想要的。

***********编辑***********

我可以通过将安装包的文件夹作为源放入来获取包

nuget list nunit.ConsoleRunner -source C:\Jenkins\workspace\packages\
NUnit.ConsoleRunner 3.10.0

我编写了以下脚本来捕获它并在 Nuget 包的路径中使用它

setlocal enabledelayedexpansion
cd "c:\program files\nuget\"
for /f "tokens=2" %%a in ('nuget.exe list nunit.ConsoleRunner -source 
C:/Jenkins/workspace/Project/packages/') do set versionString=%%a
echo !versionString!'
set pathToConsoleRunner="C:/Jenkins/workspace/Project/packages/NUnit.ConsoleRunner.!versionString!/tools/nunit3-console.exe"
echo !pathToConsoleRunner!'
!pathToConsoleRunner! C:/Jenkins/workspace/Project/bin/Debug/test.dll --where "cat == testCategory"

C:/Jenkins/workspace/Project/packages/ - 无论你的构建将你的包恢复到 C:/Jenkins/workspace/Project/bin/Debug/test.dll - 包含你的 NUnit 测试的 DLL 的路径

4

0 回答 0