推送到私有NuGet Feed(NuGet.Server,IIS)

时间:2015-11-16 20:00:36

标签: visual-studio iis nuget nuget-server

我按照Hosting Your Own NuGet Feeds上的说明操作:

  1. 创建一个空的Web应用程序
  2. 安装了NuGet.Server
  3. ~/Packages设置为Web.config
  4. 中的packagesPath
  5. 在Web.config中设置我的API密钥
  6. 使用NuGet.exe
  7. 从类库中创建.nupkg文件
  8. 在IIS中创建了一个名为" NuGet"
  9. 的新应用程序
  10. 授予IUSRIIS_IUSRS用户和群组的读/写权限
  11. 从命令行启用nuget setApiKey ABC123 -Source http://localhost/NuGet
  12. nuget push Foo.Bar.dll.nupkg -Source http://localhost/NuGet
  13. 对NuGet服务器的推送成功。我可以在Windows资源管理器中查看该文件夹并查看.nupkg文件。

    当我转到http://localhost/NuGet/nuget/Packages时,我会看到一个RSS Feed,显示我刚刚推送的包。

    当我转到http://localhost/NuGet/nuget/时,我得到一个空的包列表:

    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <service xml:base="http://localhost/NuGet/nuget/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:app="http://www.w3.org/2007/app" xmlns="http://www.w3.org/2007/app">
      <workspace>
        <atom:title>Default</atom:title>
        <collection href="Packages">
          <atom:title>Packages</atom:title>
        </collection>
      </workspace>
    </service>
    

    在Visual Studio中配置NuGet以包含http://localhost/NuGet作为软件包源之一后,我无法安装我刚刚推送的软件包。

    这一切都在运行:

    • Windows 7
    • IIS 7.5

    为什么NuGet包会显示在RSS Feed(/NuGet/nuget/Packages)中,而不会显示在/NuGet/nuget中?

1 个答案:

答案 0 :(得分:5)

因为/NuGet/nuget/Packages是列出包的URL(它恰好是RSS格式,因为这是最初的实现决策),/NuGet/nuget是用于包操作的API端点,例如推送,删除等

您发布的XML不是包的空列表,而是更多的服务描述符。将在/NuGet/nuget/Packages()?$filter=1 eq 2

中找到一个空的包列表