如何使用Nuget.exe获取特定的已安装Nuget软件包的版本?

时间:2019-04-23 20:48:23

标签: jenkins nuget nuget-package nuget-cli

我正在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的路径

0 个答案:

没有答案