Ruta temporal demasiado larga al publicar un proyecto de sitio web


Estoy tratando de publicar un ASP.NET proyecto de sitio web usando la herramienta Publish Web Site pero obtenga este error:

ASPNETCOMPILER( 0,0): Error ASPRUNTIME: La ruta especificada, nombre de archivo, o ambos son demasiado largos. El nombre de archivo completo debe ser menor que 260 caracteres, y el nombre del directorio debe ser inferior a 248 caracter.

Veo que está tratando de copiar los archivos a una ruta muy larga en AppData:

Copying all files to temporary location below for package/publish:

C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source.

c:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_compiler.exe -v /BMW.Web -p C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\Source C:\Users\imx0\AppData\Local\Temp\1\WebSitePublish\BMW.Web-424993535\obj\Debug\AspnetCompileMerge\TempBuildDir

No pude encontrar nada acerca de este directorio temporal en mi.pubxml publicar perfil. ¿Cómo puedo cambiar el directorio temporal al que Visual Studio copia los archivos?

Author: Britton, 2013-05-13

8 answers

Añada esto a su perfil de publicación para modificar el directorio temporal de package/publish:

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
 39
Author: Britton,
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-05-13 18:32:34

Esta es una especie de respuesta aparte, pero me encontré con este problema al tratar de MSBuild una solución que dependía de NodeJS y gulp. El problema fue que el árbol de dependencias de gulp se hizo muy profundo y el aspnet_compiler estaba tratando de copiar ese árbol a un directorio más profundo, lo que resultó en este error. Intenté todo lo anotado aquí, pero nada funcionó.

Como sucedió, estaba construyendo con TFS, por lo que mi solución fue ejecutar un attrib +h node_modules\* /S /D antes de msbuild para ocultar el árbol de directorios y luego attrib +h node_modules\* /S /D. Eso lo hizo por mí.

Seguro que sería bueno si el error lanzado en esta situación por el compilador revelara la ruta que causó que la escritura fallara...

 12
Author: Josh,
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-01-14 17:04:53
  1. Vaya a la carpeta de su proyecto web, vaya a la carpeta Properties\PublishProfiles.
  2. abra su archivo de perfil profile_name.pubxml (no el profile_name.pubxml.usuario)
  3. copy / past <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> bajo la etiqueta <PropertyGroup>
  4. guarde su archivo, usted sería capaz de publicar su sitio web utilizando este perfil
 9
Author: Abdu,
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
2014-05-09 06:51:19

Ninguna de las otras respuestas funcionó para mí.

Visual Studio 2013 Community Edition.

Cambié la variable de entorno TMP y TEMP a un nombre de carpeta corto y funcionó.

 6
Author: Brian Lakstins,
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-04-30 19:59:35

Intenta agregar esto

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

Al valor predeterminado <propertyGroup />

 4
Author: kennydust,
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
2014-11-19 06:54:20

Identificamos los archivos/carpetas largos usando esta solución, luego corregimos el problema desde allí:

  1. Ejecute este script en el símbolo del sistema: dir /s /b | sort /r /+261 > out.txt mostrará todas las rutas de archivo en la salida.txt file
  2. Copie la salida a un archivo de Excel
  3. En la siguiente columna de lo que pegó en agregue esta función de Excel: =LEN(A1) donde "A1" es la celda, copie esto contra cada longitud de archivo para que pueda ver cuán largas son las rutas
  4. Ordenar en Excel por la ruta longitud
  5. Identificar las longitudes por encima del límite recomendado

Sé que esto es un poco largo, pero si tiene varios archivos que están dando lugar a este problema, podrá verlos todos.

 0
Author: Bern,
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-07-14 09:05:09

A pesar de que el contenido de node_modules no estaba incluido en ninguno de los controles de versiones, no en el propio archivo *.csprojBorrar toda la carpeta node_modules hizo el truco para mí.

 0
Author: matcheek,
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
2018-03-12 12:20:28

Puede probar la solución seleccionada para corregir el problema de la ruta de archivo larga.

Aún así, si no puede publicar debido a algún otro problema, puede probar el siguiente método.

=> Si el 'Solution Configuration' está en el modo 'Debug', por favor cambie el mismo al modo 'Release' y Publique los archivos.

=> Si la Configuración de la solución está en modo Release, y si el problema persiste, por favor intente eliminar el dll generado anteriormente en el 'Liberación' carpeta de nuestro proyecto y Publicar el proyecto una vez más.

Cualquiera de los métodos anteriores resolverá el problema.

 0
Author: Jineesh Uvantavida,
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
2018-04-21 10:33:05