Incluye paquetes NuGet en TeamCity


Recientemente comencé a usar NuGet para administrar paquetes externos. Por ahora solo lo he necesitado para NLog. Todo funciona bien cuando construyo el proyecto en VS 2012. Sin embargo, estoy probando TeamCity como un servidor CI (soy bastante nuevo en CI) y me está dando el siguiente error:

[Csc] SomeNamespace\SomeClass.cs(10, 7): error CS0246: 
The type or namespace name 'NLog' could not be found 
(are you missing a using directive or an assembly reference?)

(este error se repite siempre que use NLog)

Ahora no incluí la carpeta' packages/ ' en SVN, ya que pensé que era una buena práctica no incluir binarios y dejar que MSBuild en TeamCity descárgalos por sí solo. Sin embargo, claramente no está haciendo eso. Incluyo los paquetes.archivo xml en SVN. ¿Qué puedo comprobar para ver qué está saliendo mal?

Update Gracias a @DavidBrabant fui empujado en la dirección correcta. Sin embargo, ahora obtengo el siguiente error en TeamCity:

Package restore is disabled by default. To give consent, open the Visual Studio Options dialog, 
click on Package Manager node and check 'Allow NuGet to download missing packages during build.'

Sin embargo no estoy en Visual Studio pero TeamCity, así que no sé cómo establecer 'consentimiento' a verdadero! Traté de establecer RestorePackages a 'true' en el NuGet.objetivo archivo:

<RestorePackages Condition="  '$(RestorePackages)' == '' ">true</RestorePackages>

Pero esto no funcionó.

Actualización 2 Para que funcione también establezco la siguiente propiedad NuGet.metas:

<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>

Esto hizo que la construcción se ejecute con éxito!

Author: Action Hank, 2013-01-21

4 answers

La función habilitar restauración de paquetes integrada en NuGet le permite configurar muy fácilmente la parte de precompilación del flujo de trabajo. Para ello, haga clic con el botón secundario en el nodo solución del Explorador de soluciones de Visual Studio y haga clic en la opción Habilitar restauración de paquetes NuGet. Tenga en cuenta que debe tener instalada la extensión NuGet Visual Studio en su sistema. Si lo hace, y aún no ve aparecer este elemento del menú, ya habilitó esta opción o tiene una carpeta llamada .nuget en su solución directorio.

Después de haber configurado esa opción, ahora puede eliminar todas las subcarpetas de su directorio de instalación de paquetes, de forma predeterminada $(SolutionDir)\packages, excepto los repositorios.archivo de configuración, y su solución aún debe compilar correctamente. Durante la compilación, debería ver los rastros de instalación de NuGet en la ventana de salida de Visual Studio, y debería ver los paquetes NuGet requeridos reaparecer en el directorio de instalación de paquetes también.

Ver también Usando Nuget sin confirmando paquetes .

 22
Author: David Brabant,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-01-21 12:43:16

Solo para reiterar en la actualización 2. Si usted tropezó aquí buscando una solución rápida a TeamCity no descargar paquetes NuGet, intente cambiar esta línea

<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'false' ">true</RequireRestoreConsent>

A esta línea

<RequireRestoreConsent Condition=" '$(RequireRestoreConsent)' != 'true' ">false</RequireRestoreConsent>

En su archivo NuGet.targets y debería funcionar.

 12
Author: craastad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-30 13:06:17

En TeamCity v8 pude resolver el error "restaurar paquete" usando una variable de entorno en TC.

Véase:

Http://johanleino.wordpress.com/2013/03/19/using-teamcity-for-asp-net-development-part-2/

Y

Http://confluence.jetbrains.com/display/TCD7/Configuring+Build+Parameters#ConfiguringBuildParameters-SystemPropertiesandEnvironmentVariables

Establecer env.EnableNuGetPackageRestore en "true" como variable de entorno a nivel de proyecto solucionará el problema para todas las configuraciones de compilación. Se siente un poco mejor haciendo esto que editando el NuGet.archivos de destino en mi humilde opinión.

 8
Author: Nate Rickard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-10 00:40:12

Echa un vistazo a este post: http://johanleino.wordpress.com/2013/06/17/making-use-of-teamcitys-nuget-capabilities-part-2/

Como se describe allí, agregué el primer paso de compilación "Instalador de NuGet", hice algo de coinfiguración y ahora los paquetes se restauran automáticamente.

 4
Author: Bounz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-05 07:38:46