找不到 Nuget 包源 404

Nuget Package Source 404 not found

我正在通过 TeamCity 使用 NuGet 服务器 3.4.3 以及以下 URL

http://ngserv/guestAuth/app/nuget/v1/FeedService.svc/

尝试使用 Visual Studio 2015 更新 2 访问 pakcage 源并收到此错误:

[NGServ 包源]

的 V2 提要
http://ngserv/guestAuth/app/nuget/v1/FeedService.svc/Search()?$filter=IsLatestVersion&searchTerm=''&targetFramework='net35'&includePrerelease=false&$skip=0&$top=26

返回了意外状态代码“404 未找到”。

知道是什么原因造成的吗?

注意:这适用于 Visual Studio 2015 更新 1,所以这可能是更新 2 的问题?

这是 TeamCity 和最新 NuGet 客户端的已知问题。您可以通过更新 TeamCity (teamcity.nuget.api.version=v2) 中的协议并使用 FindPackagesById() 来实现这一点。 v1 协议效率极低,我们建议您不要使用它。有关详细信息,请查看 GitHub 问题 here

此外,TeamCity 不再积极开发此组件,我们还建议您研究包括 NuGet.Server or VSTS package management 在内的替代托管机制。也有一些非微软的替代品围绕 pacakage 存储库管理。

更新: 抱歉,不是 TeamCity 专家。此集成是由 TeamCity 团队而不是我们构建的。管理员文档 here 应该会告诉您如何操作。

正如 Harikrishna Menon A 所写,您需要设置 TeamCity internal property teamcity.nuget.api.version. Internal properties are stored in [TeamCity Data Directory]/config/internal.properties。默认情况下文件 internal.properties 不存在,如果不存在则创建它。然后在文件中写入单独的字符串:

teamcity.nuget.api.version=v2

然后重新启动您的 TeamCity 服务器。 NuGet 提要的 URL 不会更改,但协议会更改。此操作对我在 TeamCity Professional 9.1.7 上有所帮助。

您可能需要检查的另一件事是 url 的大小写是否正确。信不信由你,包 feed url 是区分大小写的。我收到了 OP 错误,因为我有

feedservice.svc 而不是 FeedService.svc.

另请注意,您需要添加具有不同名称的包源,然后删除旧包源,否则 VS 将有助于保留现有外壳。确保在更正外壳后返回并验证它在保存后仍然正确。