Visual Studio 2015是否支持Nuget v1提要

时间:2015-07-21 10:28:30

标签: nuget visual-studio-2015 nuget-package-restore

我有来自Team City的v1 Nuget Feed。

我已经安装了VS 2015。

我正在尝试安装和现有的包,我在find包上收到以下错误

不是有效的NuGet v2服务响应

VS2015是否不再支持V1 Feed?或者是否有我可以改变的配置。

1 个答案:

答案 0 :(得分:4)

我在TeamCity nuget Feed中遇到了类似的问题。

要回答您的第一个问题,是的,我相信VS2015仍然支持Nuget API V1。

到目前为止,我认为我知道的是:

  • TeamCity可以使用Nuget API的v1或v2。
  • FindPackagesById在Nuget API v2而不是v1中实现(您可以通过在TeamCity Data目录中的teamcity.nuget.api.version=v2文件中添加一行internal.properties来强制TeamCity使用v2。
  • 要了解您使用的是哪个版本,可以浏览服务器上的$metadata端点(例如http://mybuildmachine.com/httpAuth/app/nuget/v1/FeedService.svc/ $元数据)。 FindPackagesById方法的存在将显示您正在使用v2。网址中的版本号不会更改。是的,这令人困惑。
  • 204 No Content未返回任何包时,TeamCity返回FindPackagesById。 Nuget.org没有返回任何结果,但包含在XML文档中。

下面的源代码,在ASP.NET源代码中出现问题。如果无法解析响应中的XML文档,那么它就会崩溃并死掉。

https://github.com/aspnet/dnx/blob/37575f3197c0b65d42e3a1db240d636aeab5a1e6/src/Microsoft.Framework.PackageManager/Restore/NuGet/NuGetv2Feed.cs#L230

我无法找到Nuget规范的副本,以确定哪些内容被视为对FindPackagesById的有效回复,但如果204响应违反规范则可能是一个TeamCity错误。

使用多个软件包源时,我目前的解决方法是在安装特定软件包时临时禁用不相关的源。