在执行“install-package”时,nuget将从软件包源中获取最新版本。如果我想约束所选版本,则需要明确设置版本号。有没有办法告诉nuget解决解决方案中已安装的本地软件包的版本?nuget:在安装到本地存储库中的版本时限制版本
例子:
package in solution packages folder:
Castle.Core.3.2.0
install-package castle.Core -projectname SomeProjectRequiringCastle
这将下载城堡(3.3.0)的最新版本,并把它添加到我的包文件夹。这不是我想要做99%的时间。为了约束的NuGet选择的版本号已经安装了我一定要记得已经安装的版本号:
install-package castle.Core -projectname SomeProjectRequiringCastle -version 3.2.0
我目前的工作流程包括浏览到包文件夹以查看已安装什么或打开packages.config文件来自已经依赖于所请求的程序集的项目。理想情况下,我想要这样的事情:
install-package castle.Core -localRepositoryVersion
有没有办法实现这种行为?或者也许一些漂亮的命令可以让我的工作流程更平滑一些?注意:nuget包管理器(GUI)下的“管理”选项是鼠标沉重的,并且已经被我的鼠标过敏手指拒绝。
编辑
我包马茨回答(信用马特,感谢)起来的功能,这里是为懒惰的一个完整的解决方案:
installLocal.psm1
<#
.Synopsis
Installs a package
#>
function install-local
{
[cmdletbinding()]
Param(
[Parameter(Mandatory=$true, Position=0)]
[String] $Id,
[Parameter(Mandatory=$true, Position=1)]
[string]$ProjectName
)
$version = get-package | ? { $_.Id -eq $Id } | % { $_.Version }
if (-not $version) {
throw "A package with id $Id has not been installed in the solution"
} else {
write-host "Found version: $version of $Id installed in solution"
}
install-package -Id $Id -ProjectName $ProjectName -Version $version
}
export-modulemember -function install-local
添加这行到Visual Studio使用的PowerShell配置文件(在我的情况下位于:C:\ Data \ WindowsPowerShell \ NuGet_profile.ps1)
import-module <path to file>\installLocal.psm1
然后,我可以写在包管理器控制台的俏皮话:
PM> install-local moq -projectname LibWhichNeedsDeps
Found version: 4.0.10827 of moq installed in solution
'Moq 4.0.10827' already installed.
Adding 'Moq 4.0.10827' to LibWhichNeedsDeps.
Successfully added 'Moq 4.0.10827' to LibWhichNeedsDeps.