簡體   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