[英]nuget.exe install not updating packages.config (or .csproj)?
在尝试使用Linux / mono上的nuget构建工作流时,我注意到了一件奇怪的事情。
在Linux上,我不能使用nuget Visual Studio插件或Powershell控制台,但我有nuget.exe命令行实用程序。 该实用程序有一个“安装”命令,可以正确获取包并将它们放在我的包目录中。
但是,nuget.exe的安装(与Visual Studio安装相反)似乎不会使用它添加的包更新packages.config,也不会将项目引用添加到我的.csproj。 后者不太重要(我可以手动完成),因为packages.config需要包含递归依赖,我不能手动执行...
有没有其他人试图仅使用nuget.exe安装新软件包或对此有任何见解? 我完全吠叫了错误的树吗?
正如它(Nuget 2.8.1)所说的那样,这仍然是不可能的,也是nuget命令行客户端的一个主要缺点,正如我所看到的那样。
Nuget.exe必须能够安装一个包并将其添加到packages.config
,所有依赖项都可用于除最简单的情况之外的任何其他内容。
我创建了一个问题,请参阅https://nuget.codeplex.com/workitem/4258
目前,可以使用以下方法。 请注意,它远非最佳,但至少使您能够正确使用nuget并解析依赖包。
packages.config
手动管理packages.config
。 添加所需的包,但省略它们的依赖项。 请注意,这与“普通” packages.config
文件不同,后者也列出了依赖项。
使用脚本遍历packages.config
并为每个包发出nuget install <package-id> -Version <version>
。 这将安装包及其依赖项。
我认为更好的解决方法是使用此处描述的技术生成PCM命令,该命令将一次安装多个包。
这是一个小概念证明,它将最终命令复制到剪贴板:
param([string[]]$dependencies)
$command = "";
foreach($dependency in $dependencies)
{
$name = $item.Name
if($dependency)
{
$command += ('"{0}", ' -f $dependency)
}
}
$command = $command.Substring(0, $command.Length - 2) + " | foreach {Install-Package `$_}"
$command | Set-Clipboard
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.