【发布时间】:2017-01-18 22:16:31
【问题描述】:
我正在尝试在 C# 控制台应用程序中使用 NuGet API 将 NuGet 包发布到内部 Nexus NuGet 存储库。代码sn-p:
List<Lazy<INuGetResourceProvider>> providers = new List<Lazy<INuGetResourceProvider>>();
providers.AddRange(Repository.Provider.GetCoreV3());
PackageSource packageSource = new PackageSource("http://nexus:8081/nexus/nuget-repo");
SourceRepository sourceRepository = new SourceRepository(packageSource, providers);
ISettings settings = NuGet.Configuration.Settings.LoadDefaultSettings(@"C:\Users\<user>\AppData\Roaming\NuGet", null, new MachineWideSettings());
var packageSourceProvider = new PackageSourceProvider(settings);
packageSourceProvider.SaveActivePackageSource(packageSource);
try
{
await PushRunner.Run(
settings,
packageSourceProvider,
filetouse,
"http://nexus:8081/nexus/nuget-repo",
"MY API KEY", "", "", 10, false, true,
new Logger());
}
catch(Exception e)
{
}
我遇到的问题是对 PushRunner 的调用立即完成,没有异常,并且包没有被推送。我在控制台中看到一条消息,NuGet 将推送包,但之后没有发出其他日志记录。我尝试使用 nuget.exe 推送相同的包,它工作正常。 Nexus 服务器需要用户名、密码和 API 密钥才能发布 NuGet 工件。
NuGet API 缺少文档,所以我不确定问题出在哪里,以及我这样做是否正确。
【问题讨论】:
-
我应该提到我想以某种方式在代码中传递用户名和密码。我假设需要凭据(加上 API 密钥),因为 nuget.exe 提示我输入凭据。在测试上述代码时,我将凭据保存在用户特定的 nuget.config 中。