我目前正在打包一些文件,并使用命令行工具将它们推送到我们一台服务器上的 NuGet 源。
我没有使用命令行工具,而是使用 Nuget.Core 设置了一个项目,并成功创建了一个包。我现在尝试通过 NuGet.Core 将该包从我的计算机推送到 NuGet feed。
使用看起来像这样的命令行工具(我也得到了这个工作):
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 的调用而不是一半和一半
所以事实证明我完全找错了地方。我想要的方法是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);
我不确定更新时 userAgent 参数的最佳值是多少PackageServer
将会。同样,如果有人对超时或disableBuffering参数有任何建议,请告诉我(例如超时以毫秒、秒等为单位)
PushPackage 方法签名如下所示:
void PackageServer.PushPackage(string apiKey, IPackage package, long packageSize, int timeout, bool disableBuffering)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)