2012-02-09 15 views
19

Tenemos un proyecto ASP.NET MVC del que queremos crear un paquete de publicación durante una compilación automatizada. La compilación usa la plantilla predeterminada no modificada con Argumentos /p:DeployOnBuild=True /p:CreatePackageOnPublish=True.TFS 2010 - Se produjo un error durante la copia: Ruta demasiado larga

Si realizo una WebDeploy directamente a un servidor, funciona bien (si cambio/p: CreatePackageOnPublish a falso), pero preferiría simplemente crear un paquete que pueda implementar durante una compilación de Lab.

El mensaje de error es similar a esto:

TF270002: Error al copiar archivos desde 'C: \ Builds \ 19 \ Binarios' a '\ nas \ Build \ Drop \ MyProject \ MyProject_Development.Test \ 20120209.1 '. Detalles: la ruta especificada, el nombre del archivo o ambos son demasiado largos. El nombre completo del archivo debe tener menos de 260 caracteres, y el nombre del directorio debe tener menos de 248 caracteres.

La primera parte del problema fue la ruta de la carpeta de construcción era demasiado largo (274 caracteres), pero después de cambiar el directorio de trabajo $(SystemDrive)\Builds\$(BuildAgentId)\$(BuildDefinitionPath)-$(SystemDrive)\Builds\$(BuildDefinitionId) es hasta 230 caracteres como el camino más largo por lo que debe estar bien.

El problema ahora parece ser la ruta en la carpeta de soltar, aunque su ruta raíz no es tan larga \\nas\Build\Drop\MyProject, el nombre de la compilación y el Formato del número de compilación aumentan rápidamente la longitud MyProject_Development.Test\MyProject_Development.Test_20120208.1. Después de eso, todas las rutas anidadas crean estructuras de carpetas realmente profundas _PublishedWebsites\MyProject.Web_Package\Archive\Content\C_C\Builds\19\Sources\MyProject\Source\MyProject.Web\obj\Debug\Package\PackageTmp\Content\ui-lightness\Images\ui-bg_diagonals-thick_18_b81900_40x40.png.

¿Hay alguna forma de evitar este problema? Acorté el formato de número de compilación de $(BuildDefinitionName)_$(Date:yyyyMMdd)$(Rev:.r) a $(Date:yyyyMMdd)$(Rev:.r) para guardar unos pocos caracteres, pero no es suficiente. Creo que podríamos acortar un poco el nombre de la compilación, pero rompería la convención de nomenclatura utilizada (¡vale, eso no sería un gran problema, pero sería molesto!) Y aún así se sentiría como una solución a corto plazo.

¿Qué más hay que hacer?

Respuesta

13

La respuesta corta es que la limitación de la longitud del camino es realmente molesta, y tendrá que pasar un tiempo (más) ajustando la estructura de su archivo/carpeta para que esto funcione.

Por ejemplo, en lugar de \ nas \ Build \ Drop \ MyProject, simplemente haga \ nas \ Build \ Drop (o \ nas \ Builds) ya que el nombre del proyecto también está en el nombre de la compilación.

Allanar la estructura de carpetas en sus proyectos (¿realmente necesita una carpeta de origen en MyProject?).

También, ir a votar por la sugerencia UserVoice para el equipo de TFS para fijar las limitaciones de longitud de trayecto: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2156195-fix-260-character-file-name-length-limitation

+0

tenía miedo de que no había mejor solución a este ... He recortado tanto como sea posible de la exceso (mi creación se llama ahora M_D.T, realmente informativo) y ahora se construye, aunque mi camino más largo es de 250 caracteres, por lo que es un poco cerca del límite para la comodidad. ¡Gracias por su respuesta y el enlace a UserVoice! –

+1

Actualización: la sugerencia de función para solucionar el problema fue rechazada por Microsoft. –

+2

nuevo enlace de voz del usuario, mantenga la presión;) http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/4954037-fix-260-character-file-name-length-limitation – rob

Cuestiones relacionadas