visual studio descargar .net msbuild teamcity nuget

.net - studio - get nuget



¿Cómo agregar el feed nuget personalizado a la compilación de TeamCity? (4)

Creé un Nuget Server usando Teamcity (ejecutándose en una máquina virtual en internet) y creé la compilación que publica un paquete en él.

También tengo otro proyecto que necesita usar ese paquete. Este proyecto también se basa en teamcity. En mi Visual Studio local, agregué Nuget Feed Uri, instalé el paquete y todo funciona bien. Pero cuando intento construirlo en teamcity, dice que "Paquete no encontrado".

Entonces mi pregunta es: "¿Cómo agregar el feed nuget personalizado a la compilación de TeamCity?"


En mi caso, el archivo DLL se guarda aquí: C:/Users/user_account/.nuget/packages/package-name/package_version/lib/netcoreapp1.0/assembly_name.dll


No quería agregar el feed en NuGet.config en el código fuente, ya que forma parte de la infraestructura de compilación y no forma parte del código de la aplicación.

Tampoco quería agregar feed en NuGet.config en los agentes de compilación de TeamCity ya que es difícil de mantener (actualizar, agregar, eliminar), además tenemos muchos agentes de compilación.

Lo que funcionó mejor para mí: agregar % system.PackageSources% en TeamCity (en el proyecto Root) que contenía tanto nuget feed global como mi personalización (punto y coma):

https://www.nuget.org/api/v2/ ; http://<teamcity_server_name>:81/guestAuth/app/nuget/v1/FeedService.svc

Si miras NuGet.Targets , verás que usa $ (PackageSources) si está definido. Entonces lo defines como parámetro de "sistema" en TeamCity y se pasa al proceso de compilación.


NuGet ahora puede leer las fuentes del archivo NuGet.targets almacenadas con la fuente misma como se explica en la respuesta a una pregunta duplicada .

<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>


Los orígenes del paquete NuGet se configuran a través de Visual Studio, pero se almacenan en un archivo de configuración por usuario, que se encuentra en c:/Users/$USER/AppData/Roaming/NuGet/NuGet.config . La entrada para el origen del paquete TeamCity debe agregarse al archivo de configuración del usuario del agente de compilación que ejecuta sus compilaciones.

  1. En su máquina local, abra el archivo Nuget.config para su usuario
  2. Copie la entrada para el origen del paquete TeamCity en el portapapeles
  3. En el agente de compilación, abra el archivo NuGet.config para el usuario que está ejecutando sus compilaciones de TeamCity
  4. Pegue en la entrada de origen del paquete TeamCity. Guardar y salir
  5. Ejecuta la compilación de nuevo. Ahora debería ser capaz de encontrar el paquete.

EDITAR: ladenedge documenta una buena solución que no existía cuando originalmente respondí esta pregunta. La solución es especialmente útil si no tiene acceso de administrador al agente de compilación o si desea configurar las fuentes del paquete por proyecto.