如何在TFS构建服务器中设置nuget服务器apikey

时间:2015-12-09 13:49:26

标签: tfs msbuild nuget tfsbuild

问题

如何设置nuget源api密钥,以便它与TFS Build一起运行“网络服务”?

方案

我有TFS构建服务器和构建定义,它作为“网络服务”执行。

在构建期间我正在尝试发布nuget包:

<Exec Command='"nuget.exe" push "mypackages\*.nupkg" -source http://mynugetserver/'/>

但是,我不知道如何为我的nuget服务器设置apikey。

我尝试了什么

nuget setapi "myapikey" -source http://mynugetserver/

当我登录构建服务器并运行runthis命令它保存当前用户的apikey,并在作为网络服务运行的TFS构建中被忽略。 build.proj在手动执行时发布包,因为为当前用户保存了密钥,但是当我对新的tfs构建进行排队时它不起作用。

我试图在我的TFS项目构建'C:\ Builds \ 1 \ MyProject \ nuget.config`的根目录中创建自定义nuget.config并运行

nuget setapi "myapikey" -source http://mynugetserver/ -ConfigFile "C:\Builds\1\MyProject\nuget.config"

但构建以消息结束:

“密钥无法在指定状态下使用”

1 个答案:

答案 0 :(得分:1)

您可以使用push命令直接设置apiKey,如下所示:

nuget push <packages> <apiKey> -source <nuget server url>

您还可以使用以下内容创建单独的proj文件,然后创建构建定义以构建它一次:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="SetApiKey">
    <Exec Command='nuget.exe setapikey xxxxx -source '/>
</Target>
</Project>

在此之后,你应该可以在“网络服务”下推送没有apikey的软件包,你可以删除构建定义和proj文件。我只是在我的环境下尝试过它并且有效。