【发布时间】:2021-08-25 23:01:35
【问题描述】:
鉴于我刚刚在解决方案或项目文件夹之外使用 nuget(使用 powershell)安装了最新版本的包,例如PS> nuget install octopustools 然后在当前文件夹下创建一个目录,在本例中为 \OctopusTools.4.22.1。
我想访问具有相对路径\OctopusTools.4.22.1\tools\octo.exe 的包内的exe。但是我想要一种简单的方法来了解我的脚本中的路径,因为版本号可能会根据版本而改变。
是否有简单的方法让 nuget 告诉我它刚刚安装到的文件夹的名称,即 OctopusTools.4.22.1?
如果可能,我想避免基于递归扫描文件夹或硬编码版本号来猜测路径。 docs 似乎没有提供任何明显的功能?
【问题讨论】:
-
.NET Framework 或 Core(他们将 NuGet 派生内容放在不同的地方)?
-
实际上两者都不是(而且两者都有!)。假设最新版本的 nuget.exe 安装在 PATH 上,我只运行
nuget install octopustools -
如果项目使用
PackageReference(.net 核心项目的标准和 .net 框架的选择加入)并且它已经在全局包缓存中,则可能什么都不做路径中的 NuGet.Config。所以这真的取决于你的确切设置和你想要做什么。 -
正如我在问题中提到的,我在解决方案之外运行此命令,因此它只是安装到当前目录的子文件夹中。
-
您可以使用 -ExcludeVersion 命令行参数。如果您运行
nuget install octopustools -ExcludeVersion,则不会创建版本文件夹,而是可以使用OctopusTools\tools\octo.exe访问octo.exe。
标签: powershell nuget