2014-09-29 166 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