Welcome to the Inedo Forums! Check out the Forums Guide for help getting started.

If you are experiencing any issues with the forum software, please visit the Contact Form on our website and let us know!

Bug using ProGet as a single NuGet feed



  • Hi.

    We started using ProGet as our internal package server so we could share some custom packages with multiple teams. Since ProGet supports connectors behind a feed, we created one connector to the NuGet official repository in order to take advantage of its caching capabilities.

    Things were going fine until we decided to ditch the official NuGet feed in Visual Studio and use only our ProGet-based one. After disabling the official feed NuGet failed to resolve any remote dependencies our custom packages might have. That seemed odd because we could install any remote package directly without any issues using the very same feed.

    We did some debugging and found out that NuGet behaves differently when the official feed is enabled. Here's the trace when only our internal feed is available:

    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id
    

    And here's the trace generated when both NuGet and our feed are enabled:

    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id
    GET https://www.nuget.org/api/v2/FindPackagesById()?id='AWSSDK'
    GET https://www.nuget.org/api/v2/FindPackagesById?id='AWSSDK'&$skiptoken='AWSSDK','1.4.8.1'
    GET https://www.nuget.org/api/v2/FindPackagesById?id='AWSSDK'&$skiptoken='AWSSDK','1.5.30.1'
    GET https://www.nuget.org/api/v2/FindPackagesById?id='AWSSDK'&$skiptoken='AWSSDK','2.0.1.0'
    

    Is that a bug in ProGet, in NuGet or are we missing some configuration?

    Thanks in advance.

    Kind regards.

    Product: ProGet
    Version: 2.2.13



  • What version of NuGet is this? I'm assuming the latest for VS (e.g. 2.8.50313.31)

    Regardless, the query against ProGet looks normal. I'm guessing the FindPackagesById() function is an optimization that was recently added.

    Can you actually see the connected packages in the ProGet feed if you browse the web application, e.g. http://server/feeds/Default ?



  • Hi Tod. Thanks for the quick response.

    What version of NuGet is this? I'm assuming the latest for VS

    Yes, it's the latest release (2.8.50313.46).

    Regardless, the query against ProGet looks normal. I'm guessing the FindPackagesById() function is an optimization that was recently added.

    Every request to ProGet returns OK. In fact everything else works. Only when it comes down to install a package which has some remote dependency NuGet fails. It seems like something within the data returned by ProGet doesn't please NuGet and so it can't continue installing the package.

    Can you actually see the connected packages in the ProGet feed if you browse the web application, e.g. http://server/feeds/Default?

    Yes. I can see both my custom packages and remote packages from the NuGet repository.

    Is there anything else I can do to help understand what's going on?



  • I can't seem to reproduce this behavior - I am able to install any package and all dependencies at will from my test instance, local, cached, or remote. What happens if you use the actual nuget.exe client to install the packages?

    Also, are you sure the version of your extension ends with .46? I just got the latest and it's .31, though I'm using VS2012... maybe if you're using VS2013 it's different.

    Beyond that, if you could save a Fiddler trace when attempting to download these dependencies, that would be helpful in working towards a resolution.



  • What happens if you use the actual nuget.exe client to install the packages?

    Same error using nuget.exe:

    GET http://server/nuget/Default/FindPackagesById()?$filter=IsLatestVersion&$orderby=Version desc&$top=1&id='Package'
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id) eq 'package'&$orderby=Id
    GET http://server/nuget/Default/Packages(Id='Package',Version='0.0.43')
    Attempting to resolve dependency 'AWSSDK (= 1.5.50.0)'.
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id) eq 'awssdk'&$orderby=Id
    System.InvalidOperationException: Unable to resolve dependency 'AWSSDK (= 1.5.50.0)'.
       at NuGet.InstallWalker.OnDependencyResolveError(PackageDependency dependency)
       at NuGet.PackageWalker.Walk(IPackage package)
       at NuGet.InstallWalker.ResolveOperations(IPackage package)
       at NuGet.PackageManager.Execute(IPackage package, IPackageOperationResolver resolver)
       at NuGet.PackageManager.InstallPackage(IPackage package, FrameworkName targetFramework, Boolean ignoreDependencies, Boolean allowPrereleaseVersions, Boolean ignoreWalkInfo)
       at NuGet.PackageManager.InstallPackage(IPackage package, Boolean ignoreDependencies, Boolean allowPrereleaseVersions)
       at NuGet.PackageManager.InstallPackage(String packageId, SemanticVersion version, Boolean ignoreDependencies, Boolean allowPrereleaseVersions)
       at NuGet.Commands.InstallCommand.InstallPackage(IFileSystem fileSystem, String packageId, SemanticVersion version)
       at NuGet.Commands.InstallCommand.ExecuteCommand()
       at NuGet.Commands.Command.Execute()
       at NuGet.Program.Main(String[] args)
    

    Also, are you sure the version of your extension ends with .46? I just got the latest and it's .31, though I'm using VS2012... maybe if you're using VS2013 it's different.

    Yes, it ends with .46 and it's VS2013 as well. But the error also occurs in VS2012 with NuGet 2.8.50313.31

    Beyond that, if you could save a Fiddler trace when attempting to download these dependencies, that would be helpful in working towards a resolution.

    The trace I posted above was from Fiddler. Here's a more detailed one (when using the Manage NuGet Packages dialog):

    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet VS Packages Dialog/2.8.50313.31 (Microsoft Windows NT 6.1.7601 Service Pack 1, VS Ultimate/11.0)
    NuGet-ProjectGuids: {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    Connection: Keep-Alive
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Transfer-Encoding: chunked
    Content-Type: application/atom+xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:14:44 GMT
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet VS Packages Dialog/2.8.50313.31 (Microsoft Windows NT 6.1.7601 Service Pack 1, VS Ultimate/11.0)
    NuGet-ProjectGuids: {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Transfer-Encoding: chunked
    Content-Type: application/atom+xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:14:44 GMT
    ------------------------------------------------------------------
    

    And here's the trace when using nuget.exe:

    GET http://server/nuget/Default HTTP/1.0
    User-Agent: NuGet/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Host: server
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Length: 357
    Content-Type: text/xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:29 GMT
    Connection: close
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/FindPackagesById()?$filter=IsLatestVersion&$orderby=Version%20desc&$top=1&id='Package' HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet Command Line/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    
    HTTP/1.1 404 Not Found
    Cache-Control: private
    Content-Length: 5817
    Content-Type: text/html; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:29 GMT
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/$metadata HTTP/1.0
    User-Agent: NuGet/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Host: server
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Content-Type: text/xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:29 GMT
    Connection: close
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'package'&$orderby=Id HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet Command Line/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Transfer-Encoding: chunked
    Content-Type: application/atom+xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:29 GMT
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/Packages(Id='Package',Version='0.0.43') HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet Command Line/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Transfer-Encoding: chunked
    Content-Type: application/atom+xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:30 GMT
    ------------------------------------------------------------------
    
    GET http://server/nuget/Default/Packages()?$filter=tolower(Id)%20eq%20'awssdk'&$orderby=Id HTTP/1.1
    DataServiceVersion: 1.0;NetFx
    MaxDataServiceVersion: 2.0;NetFx
    User-Agent: NuGet Command Line/2.8.50320.36 (Microsoft Windows NT 6.1.7601 Service Pack 1)
    Accept: application/atom+xml,application/xml
    Accept-Charset: UTF-8
    Host: server
    Accept-Encoding: gzip, deflate
    
    HTTP/1.1 200 OK
    Cache-Control: private
    Transfer-Encoding: chunked
    Content-Type: application/atom+xml; charset=utf-8
    Server: Microsoft-IIS/7.5
    X-AspNet-Version: 4.0.30319
    X-UA-Compatible: IE=edge
    X-Powered-By: ASP.NET
    Date: Wed, 09 Apr 2014 17:00:30 GMT
    ------------------------------------------------------------------
    

    As you can see, they're different; Nuget.exe does 3 times as many requests as the VS dialog (FindPackagesById is one of them).

    The next thing I think I can do is download NuGet source code and find out why that exception is thrown. But I need to find time to do that.



  • Is there any progress on this topic? I'm experiencing the same thing. I've created a custom package that is dependent on NuGet.CommandLine 2.8.2 and it won't resolve unless I download it to ProGet. I'd rather let the connector handle external packages but it just doesn't work. Also, NuGet.CommandLine 2.5 installs just fine.



  • This seems to be fixed in NuGet 2.8.2 (note this is a newer version than the 2.8.5); we also did some updates in the latest ProGet (3.1.0) that shuld help.

    If you're still seeing this behavior, then it's most definitely a different issue.



  • Thank-you for the quick reply... I had just upgraded Proget just a week ago or something, so I hadn't thought to look for another version. I downloaded and installed the latest version and indeed my issue seems to be resolved.


Log in to reply
 

Inedo Website HomeSupport HomeCode of ConductForums GuideDocumentation