asp.net - sitio - publicar proyecto web visual studio 2017
Ruta temporal demasiado larga al publicar un proyecto de sitio web (8)
Estoy intentando publicar un proyecto de sitio web ASP.NET usando la herramienta Publicar sitio web, pero obtengo este error:
ASPNETCOMPILER (0,0): Error ASPRUNTIME: la ruta especificada, el nombre del archivo o ambos son demasiado largos. El nombre de archivo completo debe tener menos de 260 caracteres y el nombre del directorio debe tener menos de 248 caracteres.
Veo que está intentando 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 sobre este directorio temporal en mi perfil de publicación .pubxml. ¿Cómo puedo cambiar el directorio temporal en el que Visual Studio copia los archivos?
- Vaya a la carpeta de su proyecto web, navegue a la carpeta Propiedades / Publicación de perfiles.
- abra su archivo de perfil nombre_perfil.pubxml (no el nombre_perfil.pubxml.user)
- copiar /
<AspnetCompileMergeIntermediateOutputPath>c:/shortPath/</AspnetCompileMergeIntermediateOutputPath>
bajo la etiqueta<PropertyGroup>
- Guarde su archivo, podrá publicar su sitio web utilizando este perfil.
Agregue esto a su perfil de publicación para modificar el directorio temporal para el paquete / publicación:
<AspnetCompileMergeIntermediateOutputPath>c:/shortPath/</AspnetCompileMergeIntermediateOutputPath>
Aunque el contenido de node_modules
no estaba incluido en ninguno de los controles de la versión, no en el archivo *.csproj
sí mismo. Eliminar toda la carpeta node_modules
me *.csproj
.
Esta es una especie de respuesta al margen, pero me encontré con este problema al tratar de MSBuild una solución que dependía de nodeJS y gulp. El problema era que el árbol de dependencia gulp se volvió muy profundo y el aspnet_compiler estaba intentando copiar ese árbol a un directorio más profundo, lo que dio como resultado este error. Intenté todo lo anotado aquí pero nada funcionó.
Tal como sucedió, estaba compilando con TFS, así 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 arrojado en esta situación por el compilador revelara la ruta que causó que la escritura fallara ...
Identificamos los archivos / carpetas largos usando esta solución, luego corrigimos el problema desde allí:
- Ejecute este script en el símbolo del sistema:
dir /s /b | sort /r /+261 > out.txt
dir /s /b | sort /r /+261 > out.txt
dará salida a todas las rutas de archivos en el archivo out.txt - Copia la salida a un archivo de Excel
- En la siguiente columna sobre lo que pegó en agregue esta función de Excel:
=LEN(A1)
donde "A1" es la celda, copie esto en cada longitud de archivo para que pueda ver cuánto duran las rutas. - Ordenar en Excel por la longitud del camino
- Identificar las longitudes por encima del límite recomendado
Sé que esto es un poco largo, pero si tienes varios archivos que están dando como resultado este problema, podrás verlos todos.
Intenta agregar esto
<IntermediateOutputPath>../Temp</IntermediateOutputPath>
al valor predeterminado <propertyGroup />
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ó.
Puede probar la solución seleccionada para corregir el problema de la ruta larga del archivo.
De todos modos, si no puedes publicar debido a algún otro problema, puedes probar el siguiente método.
=> Si la '' Configuración de la solución '' está en modo '' Depurar '', cambie lo mismo al modo '' Liberar '' y publique los archivos.
=> Si la configuración de la solución está en modo de lanzamiento, y si el problema persiste, intente eliminar la dll generada anteriormente en la carpeta '' Lanzamiento '' de nuestro proyecto y publique el proyecto una vez más.
Cualquiera de los métodos anteriores resolverá el problema.