2014-09-29 165 views
2

我能夠建立我自己的NuGet服務器(如here所述)。 服務器Packages文件夾包含MyPackage的幾個版本,比如1.0.8.0和1.0.9.0。 當我以默認方式安裝它(沒有指定版本)時,它會成功安裝。但是,當我明確做Nuget無法安裝特定版本

​​

它出錯以下消息:

安裝,包裝:無法找到包「MyPackage的」的版本「1.0.9.0」。 在行:1字符:16 +安裝封裝< < < < MyPackage的-Version 1.0.9.0 + CategoryInfo:NotSpecified:(:) [安裝封裝],出現InvalidOperationException + FullyQualifiedErrorId:NuGetCmdletUnhandledException,NuGet.PowerShell.Commands .InstallPackageCommand

更新:當在包管理器控制檯Package Source被設置爲 「ALL」 出現此錯誤消息。當我將它設置爲我自己的源(其中,事實上,包有望被發現),會出現另一個錯誤:

Install-Package : **There are multiple root elements. Line 42, position 2.** 
At line:1 char:16 
+ install-package <<<< dfct.shell.core.contracts -Version "1.0.8.0" 
+ CategoryInfo   : NotSpecified: (:) [Install-Package], XmlException 
+ FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PowerShell.Commands.InstallPackageCommand 

多根元素,42號線?在什麼文件中? 這是爲什麼?我認爲服務器端有問題,但無法弄清楚它是什麼。

+0

在包管理器控制檯中發生錯誤後,請嘗試使用以下命令查看異常的完整堆棧跟蹤:'$ error [0] .exception.stacktrace'。這應該指向NuGet發生問題的位置。 – 2014-09-29 09:58:31

回答

5

原來,MyPackage.1.0.9.0.nupkgMyPackage.1.0.9.0.symbols.nupkg共存導致NuGet崩潰。 NuGet使用OData作爲傳輸,在OData深處,它無法序列化/反序列化兩個軟件包,抱怨「多根節點」。 因此,我只是從nuget pack命令行中刪除了-symbols,因此禁用了調試包生成,現在一切正常。

+0

我有同樣的問題,但是錯誤信息是不同的。程序包安裝將失敗,代碼爲1.從同一目錄中刪除符號程序包可解決問題! – Adrian 2015-01-07 15:40:12

+0

還要確保沒有重名的同一個庫名稱不同。在我的情況下,文件夾中有一個鬆散的「MyPackage.X.X.X.nupkg副本」文件。 – Isaac 2017-08-24 16:08:30