我目前正在使用命令行工具打包一些文件并将它们推送到我们的某个服务器上的NuGet Feed中。 我没有使用命令行工具,而是使用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而不是一半半
答案 0 :(得分:10)
事实证明我完全是在错误的地方。我想要的方法是PushPackage
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参数的最佳值是多少。同样,如果有人对超时或disableBuffering参数的含义有任何建议,请告诉我(例如以ms,秒等为单位的超时)。
PushPackage方法签名如下所示:
void PackageServer.PushPackage(string apiKey, IPackage package, long packageSize, int timeout, bool disableBuffering)
答案 1 :(得分:1)
除了rh072005的回答: