La compilación del servicio Team Foundation falla en la restauración del paquete NuGet


Estoy teniendo un tipo de problema extraño con mi Team Foundation Service build. Lo pongo en cola y comienza bien, pero luego falla con el siguiente error:

C:\a\src\Platform\Prod\Platform.Web\Platform.Web.csproj (436): The build restored NuGet packages. Build the project again to include these packages in the build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317568.

Entonces vuelvo a poner en cola la compilación por el mensaje / URL and...it vuelve a pasar. He buscado en Google pero no puedo entender cuál es el problema. Puedo construir muy bien en Visual Studio y la solución está configurada para la restauración de paquetes. ¿Alguna idea?

Gracias de antemano.

Author: Matt, 2013-09-24

8 answers

La solución a esto se especifica en link en el propio mensaje de error.

Esto está sucediendo debido a una Mejora como se especifica en esa página:

La Mejora

Hemos actualizado Microsoft.Bcl.Construir para utilizar un enfoque diferente. El nuevo versión utilizará una importación condicional similar a lo que Nuget's la función de importación automática lo hace. Esto siempre permitirá que el proyecto carga en Visual Studio.

Sin embargo, Microsoft.Bcl.Build también agrega un objetivo a tu proyecto que se ejecutará una vez finalizada la compilación. Este objetivo comprueba si el paquetes restaurados y si es así fallan la compilación con un mensaje de error procesable:

Construir una segunda vez solucionará este error. Tenga en cuenta que esto el error solo aparecerá si faltan paquetes, por lo que no es propio de ti siempre hay que construir dos veces.

Luego especifica lo siguiente para el caso de build server / continuous integración (CI):

Esta solución no aborda el servidor de compilación / la integración continua CI) escenarios. Con el fin de utilizar con éxito el paquete de restauración en el construir servidor, tiene dos opciones:

  1. Check-in el .archivo de objetivos.
  2. Ejecute explícitamente NuGet package restore antes de crear su proyecto/solución.

Entonces, supongo que para la resolución de su problema se deben seguir los dos pasos anteriores.

 15
Author: RinoTom,
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-25 17:05:40

Si alguien todavía tiene este problema en el servidor de compilación de tfs, debe hacer lo siguiente:

  1. Asegúrese de que todos los proyectos en la solución que intenta compilar tengan la última versión de Microsoft.Bcl.Compilar el paquete (simplemente actualícelo en el administrador de paquetes).
  2. Después de que la compilación fallara, vea todos los proyectos (en el resumen del registro de compilación de tfs) que generaron este error ("La compilación restauró paquetes NuGet ...")
  3. Abre cada uno de esos proyectos .archivo proj y comentario fuera todo el elemento de destino comenzó con ' Destino Name = "EnsureBclBuildImported "'
  4. Compruebe y vuelva a intentar la compilación

Parece que de alguna manera después de actualizar no todos los proyectos se eliminan esos bloques antiguos de código de compilación y está causando problemas (según entiendo, ya no es necesario después de que microsoft cambió su proceso de compilación bcl).

 47
Author: Michael Logutov,
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-23 05:40:09

Qué dolor. Acaba de tener el mismo problema con TeamCity en lugar de TFS. Estamos restaurando explícitamente paquetes antes de compilar, sin embargo, algunos proyectos todavía se equivocan en el servidor CI. Hemos sido capaces de resolverlo sin piratear los archivos csproj forzando la propiedad build BclBuildImported = True después de restaurar los paquetes - los objetivos falsos en los archivos csproj están condicionados a que esta propiedad no se establezca.

Puede ser una forma más robusta de evitarlo si puede establecer esta propiedad fácilmente en TFS.

 0
Author: lesscode,
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
2015-01-06 20:57:28

Los archivos de destino TFSBuild necesarios deben incluirse en el control de código fuente o los paquetes NuGet deben restaurarse antes de intentar compilar la solución.

Los detalles sobre cómo hacerlo se proporcionan en el nuget.org .

Básicamente implica crear un nuevo archivo de proyecto de compilación que primero restaura los paquetes y luego construye su solución.

 0
Author: Scott Munro,
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
2015-01-17 00:04:36

Me encontré con este problema en un proyecto de API web, pero usamos NAnt.

La resolución fue actualizar el paquete nuget de Componentes de compilación de Microsoft BCL a la última versión (1.0.21) y las cosas se construyen bien ahora.

 0
Author: GotDibbs,
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
2015-06-12 21:29:36

Abra el csproj ofensivo en el bloc de notas o en cualquier otro editor. Compruebe si el objetivo EnsureBclBuildImported está disponible en el csproj. Si es así, comente la segunda condición de error dentro del destino que dirige la compilación a fallar incluso si el paquete está disponible (es como fallar la compilación independientemente de que el paquete esté disponible o no!).



http://go.microsoft.com/fwlink/?LinkID=317567 ." HelpKeyword= "BCLBUILD2001" />

http://go.microsoft.com/fwlink/?LinkID=317568 ." HelpKeyword= "BCLBUILD2002" />

 0
Author: Saurabh Jha,
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
2015-12-09 12:20:31

He visto el problema similar en un proyecto de Xamarin y haciendo los siguientes pasos arreglé mi problema;

  1. Establecer el modo de proyecto para Liberar y Reconstruir Todo
  2. Vuelva a configurar el modo proyecto para Depurar y Reconstruir todo
  3. Problema solucionado.

Raro pero funcionó para mí, espero que ayude.

 0
Author: Nurhak Kaya,
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
2016-12-13 11:46:40

Tuve que restaurar paquetes antes del destino limpio de mi script de compilación. Erróneamente pensé que restaurar paquetes antes de construir era suficiente.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets='GatherBinaries' xmlns='http://schemas.microsoft.com/developer/msbuild/2003'>

    <Target Name='RestorePackages'>
        <Exec Command='tools\NuGet.exe Restore "Web.sln"'/>
    </Target>

    <!--
        must call RestorePackages prior to clean to avoid error the following error
        "The build restored NuGet packages. Build the project again to include these packages in the build."
        -->
    <Target Name='Clean' DependsOnTargets='RestorePackages'>
        <MSBuild Projects='Web.sln' Targets='Clean' Properties='Configuration=Release'/>
    </Target>

    <Target Name='Build' DependsOnTargets='Clean;RestorePackages'>
        <MSBuild Projects='Web.sln' Targets='Build' Properties='Configuration=Release'/>
    </Target>

</Project>
 0
Author: mcdon,
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
2017-03-14 23:09:36