visual studio solucion revirtiendo restaurar proyecto por para paquetes paquete ningun los error cambios admitido tfs tfsbuild vsts azure-devops tfs2015 nuget-package-restore

studio - Cómo obtener TFS2015 Build(Build.vnext) y NuGet package restore para usar fuentes de paquetes personalizadas



restaurar paquetes nuget visual studio 2017 (8)

Estoy tratando de que nuestra TFS2015 Build ( TFSBuild vnext ) funcione junto con VS Team Services.

Hasta ahora, la mayoría de los blogs y la documentación han sido útiles, excepto cuando se trata de construir un proyecto que utiliza fuentes de paquetes personalizados para la restauración automática de paquetes NuGet.

Implementé con éxito un Agente de compilación de Team Services (el nuevo mecanismo para compilaciones) y todo pareció funcionar bien hasta que la tarea de compilación para Restaurar paquetes NuGet falló.

El error se debió a que el origen del paquete personalizado / privado no se recogió de la configuración VS instalada, por lo que no se pudieron encontrar esos paquetes. Los paquetes tradicionales del feed de paquetes NuGet predeterminado se restauraron sin problemas.

¿Cómo especifico las fuentes de paquetes adicionales para que NuGet las use cuando uso un agente?

EDITAR: vcastro preguntó sobre el paso de compilación del instalador NuGet y la definición de rutas en la configuración de ese paso de compilación. Lo anterior está utilizando el paso de compilación de Visual Studio y la opción integrada para tener los paquetes de restauración de NuGet. Refiera esta imagen para referencia:


  1. Especifique sus URL de feed NuGet personalizadas en el archivo nuget.config de la solución. No almacene ningún nombre de usuario y contraseña en este archivo.

    <add key="nuget.org" value="https://www.nuget.org/api/v2/" /> <add key="MyCompany" value="https://nuget.mycompany.com:443/nuget" />

  2. Cree variables de nombre de usuario y contraseña en su definición de compilación en VSTS. Las variables se pueden cifrar y no se mostrarán en ninguna de las salidas del registro de compilación. Aquí crearé las variables MyCompanyNugetUser y MyCompanyNugetPwd .

  3. En nuestros pasos de compilación, agregamos un script Powershell como primera acción, esto leerá las variables de nombre de usuario y contraseña y actualizará el archivo de nivel de usuario nuget.config en la máquina de compilación. A continuación se muestra el fragmento de código de mi script en línea Powershell:

    Argumentos:

    $(MyCompanyNugetUser) $(MyCompanyNugetPwd)

    Guión:

    param($user, $pwd) $nugetFile = "$ENV:AGENT_HOMEDIRECTORY/agent/worker/tools/nuget.exe" Write-Output "Looking for nuget.exe in $nugetFile" if (-not (Test-Path $nugetFile)) { Write-Error "nuget.exe could not be located." return } Write-Output "nuget.exe located" $cmd = "$nugetFile sources add -name MyCompany -source https://nuget.mycompany.com:443/nuget -username $user -password $pwd -StorePasswordInClearText" Write-Output $cmd iex $cmd

  4. A continuación, seguimos ejecutando el paso predeterminado de restauración NuGet de las plantillas de Microsoft

Más aquí: https://codingcase.com/2016/07/27/vsts-build-setup-custom-nuget-feeds-with-authentication/

HTH


Agregue un NuGet.config a su proyecto que especifique una ubicación alternativa del paquete. Las reglas para la resolución están bien definidas y explicadas en la documentation oficial.


Alternativamente, también puede agregar un paso de compilación del NuGet Installer antes del paso de Visual Studio Build en su configuración de compilación para restaurar todos los paquetes de NuGet.

Allí puede pasar la ubicación de su repositorio privado como argumento a nuget.exe :

-source "https://www.nuget.org/api/v2/;http://mynugetserver"


En el RTM de Team Foundation Server 2015, debe agregar un paso de compilación del tipo "Instalador NuGet" y restaurar los paquetes del archivo de Solución antes de ejecutar el proceso de compilación real. En esta tarea, puede pasar el argumento -ConfigFile path/to/nuget.config que contiene su ruta de repositorio.

Por ejemplo:

<configuration> <packageSources> <add key="Internal Nuget" value="//srv-nuget/Repo" /> </packageSources> </configuration>


Hay una nueva tarea VSTS llamada "Instalador NuGet" que le permite registrar su archivo NuGet.config y especificar las diferentes fuentes de paquetes. Ejecute esta tarea antes de ejecutar MSBuild.

Si está utilizando VSTS NuGet Feed, deberá agregar la cuenta del servicio de compilación al feed para permitir la descarga de paquetes https://www.visualstudio.com/get-started/package/use/common-identities


He escaneado la web con poco éxito, pero después de jugar, lo siguiente ayudará:

OK Parece que las fuentes del paquete configuradas para NuGet.config se almacenan por cuenta de usuario, p. Ej.

c:/Users/<<username>>/AppData/Roaming/NuGet/NuGet.config

Mi problema fue más difícil de resolver, porque el agente de compilación se estaba ejecutando como un Windows Service en la cuenta del Local System . Entonces, para obtener la configuración de NuGet para la compilación, tuve que usar la siguiente ruta en su lugar:

  • Windows C:/Windows/SysWOW64/config/systemprofile/AppData/Roaming/NuGet/NuGet.Config 64 bits C:/Windows/SysWOW64/config/systemprofile/AppData/Roaming/NuGet/NuGet.Config
  • Windows C:/Windows/System32/config/systemprofile/AppData/Roaming/NuGet/NuGet.Config 32 bits C:/Windows/System32/config/systemprofile/AppData/Roaming/NuGet/NuGet.Config

Es posible que necesite tener permisos elevados para crear la subcarpeta NuGet y el archivo NuGet.Config .

Nota: no tengo una solución para usar la cuenta de Local Service . Lo anterior solo funciona para la cuenta Local System (o un usuario real).


Si tiene problemas para que esto funcione SOLO en UWP, asegúrese de que el CASO del nombre del paquete esté escrito correctamente. Si el caso es incorrecto, entonces (solo para UWP) nuestro servidor de compilación falla la compilación.

por ejemplo, si tiene un paquete llamado Com.Company.Components y actualiza el paquete usando "install-package com.company.components " (tenga en cuenta el caso de la letra inicial), entonces la compilación UWP en el servidor de compilación puede fallar al encontrar El paquete en su tienda local.


Una solución (funciona para mí) es cambiar la cuenta para el servicio de agente de compilación tfs 2015 (en mi máquina de compilación VSO Agent tsf.Agent-PC) a tfsagent, por ejemplo, y agregar Nuget.config a C: / Users / tfsagent / AppData / Roaming / Nuget. ¡Eso es todo!