我有以下Powershell脚本:
param(
[Parameter(Mandatory = $true, Position = 1)]$PackageId,
$PackagesDir = "$env:USERPROFILE.nugetpackages",
$Flavour = 'net462',
$Source)
if (-not (Test-Path "$PackagesDirnuget.exe"))
{
mkdir $PackagesDir -ErrorAction SilentlyContinue
curl -Uri "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -OutFile "$PackagesDirnuget.exe"
}
if ($Source)
{
$SourceSwitch = "-Source","$Source"
}
&"$PackagesDirnuget.exe" install $PackageId -OutputDirectory $PackagesDir -NonInteractive $SourceSwitch
$PkgDir = $(&"$PackagesDirnuget.exe" list $PackageId -source $PackagesDir) -replace ' ','.'
$Base = "$PackagesDir$PkgDirlib$Flavour$PackageId"
@{
Path = (dir "$Base.dll","$Base.exe" -ErrorAction SilentlyContinue).FullName
}
它执行以下操作:
- 下载 nuget.exe如果在包目录下找不到
- 在包目录下安装给定的包。因此,对于具有最新版本 1.2.3 的软件包 XYZ,它会在给定的软件包 dir 下创建一个目录 XYZ.1.2.3。
- 尝试猜测主包程序集的路径并将其返回。
我希望包在 XYZ\1.2.3 中,而不是在 XYZ.1.2.3 中
我该怎么做?
附言
我会很高兴对脚本的任何其他改进,因为我是 nuget 的新手,可能做错了。
答案是使用 nuget add 命令,如下所述 - https://learn.microsoft.com/en-us/nuget/tools/cli-ref-add
此布局称为分层源。