web-dev-qa-db-fra.com

Chemin temporaire trop long lors de la publication d'un projet de site Web

J'essaie de publier un projet de site Web ASP.NET à l'aide de l'outil Publier un site Web mais j'obtiens cette erreur: 

ASPNETCOMPILER (0,0): Erreur ASPRUNTIME: le chemin spécifié, nom de fichier, ou les deux sont trop longs. Le nom de fichier complet doit être inférieur à 260 caractères et le nom du répertoire doit être inférieur à 248 personnages.

Je vois qu'il essaie de copier les fichiers sur un très long chemin dans 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

Je n'ai rien trouvé à propos de ce répertoire temporaire dans mon profil de publication .pubxml. Comment modifier le répertoire temporaire dans lequel Visual Studio copie les fichiers?

32
Britton

Ajoutez ceci à votre profil de publication pour modifier le répertoire temporaire pour package/publier:

<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
41
Britton

C'est en quelque sorte une réponse à part, mais j'ai rencontré ce problème lorsque j'ai essayé de MSBuild, une solution qui dépendait de nodeJS et de gulp. Le problème était que l'arbre de dépendance gulp devenait très profond et aspnet_compiler essayait de copier cet arbre dans un répertoire plus profond, ce qui provoquait cette erreur. J'ai essayé tout noté ici mais rien n'a fonctionné.

Comme cela m’était arrivé, je construisais avec TFS; ma solution consistait donc à exécuter un attrib +h node_modules\* /S /D avant msbuild pour masquer l’arborescence de répertoires, puis à attrib +h node_modules\* /S /D. Cela l'a fait pour moi.

Bien sûr, ce serait bien si l'erreur renvoyée dans cette situation par le compilateur révélait le chemin qui entraînait l'échec de l'écriture ...

12
Josh
  1. Accédez au dossier de votre projet Web, accédez au dossier Propriétés\PublishProfiles.
  2. ouvrez votre fichier de profil nom_profil.pubxml (pas le nom_profil.pubxml.user)
  3. copier/coller <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> sous la balise <PropertyGroup>
  4. enregistrer votre fichier, vous pourrez publier votre site web en utilisant ce profil
10
Abdu

Aucune des autres réponses n'a fonctionné pour moi.

Visual Studio 2013 Community Edition.

J'ai changé les variables d'environnement TMP et TEMP en un nom de dossier court et cela a fonctionné.

6
Brian Lakstins

essayez d'ajouter ceci 

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

à la valeur par défaut <propertyGroup />

4
kennydust

Même si le contenu de node_modules n'était inclus ni dans le contrôle de version ni dans le fichier *.csproj lui-même, la suppression de l'intégralité du dossier node_modules me convenait parfaitement.

1
matcheek

Nous avons identifié les longs fichiers/dossiers utilisant cette solution, puis corrigé le problème à partir de là:

  1. Exécutez ce script à l'invite de commande: dir /s /b | sort /r /+261 > out.txt. Tous les chemins de fichiers seront affichés dans le fichier out.txt.
  2. Copier la sortie dans un fichier Excel
  3. Dans la colonne suivante de ce que vous avez collé, ajoutez cette fonction Excel: =LEN(A1) où "A1" est la cellule, copiez-le dans chaque longueur de fichier afin de voir la longueur des chemins.
  4. Trier dans Excel par la longueur du chemin
  5. Identifier les longueurs supérieures à la limite recommandée

Je sais que c'est un peu long, mais si vous avez plusieurs fichiers à l'origine de ce problème, vous pourrez tous les voir.

0
Bern

Vous pouvez essayer la solution sélectionnée pour résoudre le problème du chemin de fichier long.

Toujours si impossible de publier en raison d'un autre problème, vous pouvez essayer la méthode ci-dessous.

=> Si le paramètre 'Configuration de la solution} _' est en mode 'Débogage', remplacez-le de la même manière par le mode 'Libération' et publiez les fichiers.

=> Si la configuration de la solution est en mode de publication et si le problème persiste, veuillez essayer de supprimez la dll générée précédemment 'Release' dossier de notre projet et publier à nouveau le projet.

N'importe laquelle des méthodes ci-dessus résoudra le problème.

0
Jineesh Uvantavida