【问题标题】:Push NuGet package programmatically using NuGet.Core使用 NuGet.Core 以编程方式推送 NuGet 包
【发布时间】:2019-01-21 17:28:39
【问题描述】:

我目前正在打包一些文件,并使用命令行工具将它们推送到我们其中一台服务器上的 NuGet 源。 我没有使用命令行工具,而是使用 Nuget.Core 建立了一个项目,并成功地创建了一个包。我现在正试图通过 NuGet.Core 将该包从我的机器推送到 NuGet 提要。 使用看起来像这样的命令行工具(我也得到了这个):

nuget.exe push package.nupkg -ApiKey MYAPIKEY -Source http://nugetpackagefeedaddress

我想要做的是使用 NuGet.Core 复制推送功能。到目前为止,我设法获得的最接近的是从PackageRepositoryFactory 获取两个存储库,一个用于本地机器路径,一个用于包提要,然后从本地检索包并尝试将其添加到提要中这个:

var remoteRepo = PackageRepositoryFactory.Default.CreateRepository("myNugetPackagefeedUrl");
var localRepo = PackageRepositoryFactory.Default.CreateRepository(@"locationOfLocalPackage");
var package = localRepo.FindPackagesById("packageId").First();
remoteRepo.AddPackage(package);

此代码导致NotSupportedException 声明“不支持指定的方法”

是否可以使用 NuGet.Core 推送包?使用上面的代码,我离它很近吗?

注意:我知道我可以包装对 nuget.exe 的调用并从 .NET 调用它,但我要么想从 NuGet.Core 打包和推送,要么通过包装对 nuget.exe 的调用来做这两者比一半多

【问题讨论】:

    标签: c# nuget nuget-package


    【解决方案1】:

    所以事实证明我完全看错了地方。我想要的方法是PushPackage on PackageServer

    代码现在看起来像这样

    var localRepo = PackageRepositoryFactory.Default.CreateRepository(@"locationOfLocalPackage");
    var package = localRepo.FindPackagesById("packageId").First();
    var packageFile = new FileInfo(@"packagePath");
    var size = packageFile .Length;
    var ps = new PackageServer("http://nugetpackagefeedaddress", "userAgent");
    ps.PushPackage("MYAPIKEY", package, size, 1800, false);
    

    我不确定在更新 PackageServer 时 userAgent 参数的最佳值是多少。同样,如果有人对 timeout 或 disableBuffering 参数想要什么有任何建议,请告诉我(例如超时,以毫秒、秒为单位等)

    PushPackage 方法签名如下所示:

    void PackageServer.PushPackage(string apiKey, IPackage package, long packageSize, int timeout, bool disableBuffering)
    

    【讨论】:

      【解决方案2】:

      除了rh072005的回答:

      • 超时以毫秒为单位,请注意。
      • Uri 很棘手。对于 NuGet.Server 实现,PushPackage uri 应为“http://nugetserveraddress”,而对于 IPackageRepository 对象,Uri 应为“http://nugetserveraddress/nuget
      • 对于大型包,如果 IIS 服务器未配置为接受大型请求,您将收到 (404) Not Found

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-11
        相关资源
        最近更新 更多