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?
Ajoutez ceci à votre profil de publication pour modifier le répertoire temporaire pour package/publier:
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
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 ...
<AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath>
sous la balise <PropertyGroup>
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é.
essayez d'ajouter ceci
<IntermediateOutputPath>..\Temp</IntermediateOutputPath>
à la valeur par défaut <propertyGroup />
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.
Nous avons identifié les longs fichiers/dossiers utilisant cette solution, puis corrigé le problème à partir de là:
dir /s /b | sort /r /+261 > out.txt
. Tous les chemins de fichiers seront affichés dans le fichier out.txt.=LEN(A1)
où "A1" est la cellule, copiez-le dans chaque longueur de fichier afin de voir la longueur des chemins.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.
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.