webentwicklung-frage-antwort-db.com.de

Temporärer Pfad zu lang beim Veröffentlichen eines Websiteprojekts

Ich versuche, ein ASP.NET-Websiteprojekt mit dem Publish Web Site-Tool zu veröffentlichen, erhalte jedoch folgende Fehlermeldung: 

ASPNETCOMPILER (0,0): Fehler ASPRUNTIME: Der angegebene Pfad, Dateiname oder beide sind zu lang. Der vollständig qualifizierte Dateiname muss kleiner als .__ sein. 260 Zeichen, und der Verzeichnisname muss kleiner als 248 sein Zeichen.

Ich sehe, dass versucht wird, die Dateien in AppData in einen sehr langen Pfad zu kopieren:

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

Ich konnte nichts über dieses temporäre Verzeichnis in meinem .pubxml-Veröffentlichungsprofil finden. Wie kann ich das temporäre Verzeichnis ändern, in das Visual Studio die Dateien kopiert?

32
Britton

Fügen Sie dies Ihrem Veröffentlichungsprofil hinzu, um das temporäre Verzeichnis für Paket/Veröffentlichung zu ändern:

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

Dies ist eine Art Nebenbemerkung, aber ich bin auf dieses Problem gestoßen, als ich versuchte, eine Lösung zu erstellen, die auf nodeJS und gulp auf MSBuild angewiesen war. Das Problem bestand darin, dass der Abhängigkeitsbaum für den Gulp sehr tief wurde und der aspnet_compiler versuchte, diesen Baum in ein tieferes Verzeichnis zu kopieren, was zu diesem Fehler führte. Ich habe alles ausprobiert, aber nichts hat funktioniert.

Da es so war, baute ich mit TFS auf. Meine Lösung bestand also darin, vor msbuild einen attrib +h node_modules\* /S /D auszuführen, um den Verzeichnisbaum und dann attrib +h node_modules\* /S /D auszublenden. Das hat es für mich getan.

Sicher wäre Nizza, wenn der Fehler, den der Compiler in dieser Situation auslöste, den Pfad enthüllte, durch den das Schreiben fehlschlug ...

12
Josh
  1. Wechseln Sie zu Ihrem Webprojektordner und navigieren Sie zu Properties\PublishProfiles.
  2. Öffnen Sie Ihre Profildatei profilname.pubxml (nicht die profilname.pubxml.user).
  3. copy/past <AspnetCompileMergeIntermediateOutputPath>c:\shortPath\</AspnetCompileMergeIntermediateOutputPath> unter dem <PropertyGroup>-Tag
  4. wenn Sie Ihre Datei speichern, können Sie Ihre Website mit diesem Profil veröffentlichen
10
Abdu

Keine der anderen Antworten funktionierte für mich.

Visual Studio 2013 Community Edition.

Ich habe die Umgebungsvariable TMP und TEMP in einen kurzen Ordnernamen geändert, und es hat funktioniert.

6
Brian Lakstins

versuchen Sie, dies hinzuzufügen 

<IntermediateOutputPath>..\Temp</IntermediateOutputPath>

auf den Standard <propertyGroup />

4
kennydust

Auch wenn der Inhalt von node_modules weder in der Versionskontrolle noch in der *.csproj-Datei enthalten war. Das Löschen des gesamten node_modules-Ordners hat für mich den Trick gebracht.

1
matcheek

Wir haben die langen Dateien/Ordner mit dieser Lösung identifiziert und das Problem von dort behoben:

  1. Führen Sie dieses Skript mit dem Befehl Prompt: dir /s /b | sort /r /+261 > out.txt aus. Es werden alle Dateipfade in die Datei out.txt ausgegeben
  2. Kopieren Sie die Ausgabe in eine Excel-Datei
  3. Fügen Sie in der nächsten Spalte über dem, was Sie eingefügt haben, folgende Excel-Funktion hinzu: =LEN(A1) Wobei "A1" die Zelle ist, kopieren Sie diese für jede Dateilänge, damit Sie sehen können, wie lang die Pfade sind
  4. Sortieren Sie in Excel nach der Pfadlänge
  5. Identifizieren Sie die Längen über dem empfohlenen Grenzwert

Ich weiß, das ist ein bisschen langatmig, aber wenn Sie mehrere Dateien haben, die zu diesem Problem führen, können Sie sie alle sehen.

0
Bern

Sie können die ausgewählte Lösung ausprobieren, um das Problem mit dem langen Dateipfad zu beheben.

Wenn die Veröffentlichung aufgrund eines anderen Problems nicht möglich ist, können Sie die Methode unten verwenden.

=> Befindet sich die 'Solution Configuration' im ' Debug ' Modus, ändern Sie bitte den ' Release ' Modus und veröffentlichen Sie die Dateien.

=> Wenn sich die Lösungskonfiguration im Freigabemodus befindet und das Problem weiterhin besteht, versuchen Sie bitte die zuvor erstelltedll im' Release '-Ordner zu löschen. unseres Projekts und Veröffentlichen Sie das Projekt erneut.

Jede der oben genannten Methoden löst das Problem.

0