繁体   English   中英

nuget.exe安装不更新packages.config(或.csproj)?

[英]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并解析依赖包。

  1. packages.config手动管理packages.config 添加所需的包,但省略它们的依赖项。 请注意,这与“普通” packages.config文件不同,后者也列出了依赖项。

  2. 使用脚本遍历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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM