我使用Teamcity(在互联网上的虚拟机上运行)创建了一个Nuget Server,并创建了一个将包发布到其中的构建。
我还有另一个需要使用该软件包的项目。该项目也建立在团队城市之上。在我的本地Visual Studio上,我添加了nuget feed uri,安装了包,一切正常。但是当我尝试在teamcity上构建它时,它会说“找不到包”。
所以我的问题是:“如何将自定义nuget Feed添加到TeamCity构建中?”
答案 0 :(得分:41)
NuGet包源是通过Visual Studio配置的,但它们存储在c:\Users\$USER\AppData\Roaming\NuGet\NuGet.config
的每用户配置文件中。需要将TeamCity包源的条目添加到运行构建的构建代理用户的配置文件中。
编辑: ladenedge记录了一个很好的解决方案,在我最初回答这个问题时并不存在。如果您没有构建代理的管理员权限,或者希望基于每个项目配置包源,则该解决方案特别有用。
答案 1 :(得分:25)
NuGet现在可以按照the answer到a duplicate question中的说明,从与源本身一起存储的NuGet.targets
文件中读取来源。
<ItemGroup Condition=" '$(PackageSources)' == '' ">
<!-- Package sources used to restore packages. By default, registered sources under %APPDATA%\NuGet\NuGet.Config will be used -->
<!-- The official NuGet package source (https://nuget.org/api/v2/) will be excluded if package sources are specified and it does not appear in the list -->
<PackageSource Include="https://nuget.org/api/v2/" />
<PackageSource Include="https://my-nuget-source/nuget/" />
</ItemGroup>
答案 2 :(得分:17)
我不想在源代码中添加 NuGet.config 中的Feed,因为这是构建基础结构的一部分,而不是应用程序代码的一部分。
我不想在TeamCity构建代理上添加 NuGet.config 中的Feed,因为它很难维护(更新,添加,删除),而且我们有很多构建代理。
对我来说最有效的方法 - 在TeamCity中添加%system.PackageSources%(在Root项目上),其中包含全局nuget feed和我的自定义(以分号分隔):
https://www.nuget.org/api/v2/; http://<teamcity_server_name>:81/guestAuth/app/nuget/v1/FeedService.svc
如果您查看 NuGet.Targets ,您会看到它使用$(PackageSources)(如果已定义)。因此,您在TeamCity中将其定义为“system”参数,并将其传递给构建过程。
答案 3 :(得分:-2)
在我的例子中,DLL文件保存在这里:
C:\Users\user_account\.nuget\packages\package-name\package_version\lib\netcoreapp1.0\assembly_name.dll