Aus irgendeinem seltsamen Grund versucht mein Visual Studio 2008 beim Versuch, ein C # -Projekt zu kompilieren, die Ausgabe der ausführbaren Datei in ein Verzeichnis mit demselben Namen wie eine ausführbare Datei zu schreiben, zumindest sieht es so aus, als ob der Fehler vorliegt Nachricht impliziert. Nach dem Ausführen der Kompilierung für eines meiner Projekte meldet CSC.EXE den folgenden Compilerfehler:
Konnte nicht in die Ausgabedatei schreiben 'D: \ Projekte \ Beispiele \ StringBuilderVsString \ obj \ Release \ StringBuilderVsString.exe' - 'Der Verzeichnisname ist ungültig. '
Wenn ich in obj\Release
oder obj\Debug
hineinschaue, werden alle Zwischenressourcen wie StringBuilderVsString.pdb korrekt in dieses Verzeichnis geschrieben. Das Verzeichnis enthält keine Leerzeichen. Der Fehler tritt auch beim Ausführen von csc.exe von der Eingabeaufforderung auf.
Beim Ausführen des Prozessmonitors sehe ich nur SUCCESS für Dateien, auf die csc.exe zugreift, und ich sehe keine Abfragen oder Schreiben an Orte, die nicht existieren.
Ideen dazu sind willkommen.
Gelöst! Danke für den Input, ich habe inzwischen eine Lösung gefunden. Die Ursache ist selten, aber es kann anderen passieren, also habe ich beschlossen, meine eigene Frage hier zu beantworten:
Ein falscher oder nicht zugreifbarer %TEMP%
-Platz oder ein nicht zugreifbarer %USERPROFILE%
-Pfad.
Ich hatte diese Pfade auf ein schnelleres SSD-Laufwerk verschoben, um das Kompilieren zu beschleunigen. Das Laufwerk ist abgestürzt und das Betriebssystem hat es nicht mehr gefunden (wie berichtet auf ServerFault hier ) und folglich wurden die verschobenen Standorte (Internet-Caches, meine Dokumente und Temp) unzugänglich gemacht.
Der von Visual Studio erwähnte Fehler ist irreführend: Er hat nichts mit dem Namen der Datei zu tun (während ich mich immer noch wundere, warum die ausführbare Datei als Verzeichnis abgefragt wurde), lag der Fehler in der Position% TEMP% schlecht sein.
Fix die %USERPROFILE%
oder %TEMP%
Umgebungsvariablen, (falls du es vergessen hast, ist es hier: System & gt; Erweitert & gt; Umgebungsvariablen ).
Hinweis: Die typische und standardmäßige TEMP-Einstellung besteht darin, die Umgebungsvariable USERPROFILE wie im Standard %USERPROFILE%\AppData\Local\Temp
zu verwenden. Dies funktioniert nur, wenn in der Registrierung der Schlüssel unter HKCU\Environment\TEMP
vom Typ REG_EXPAND_SZ
und nicht REG_SZ
ist.
Stellen Sie sicher, dass Sie genügend freien Speicherplatz in Ihrem Laufwerk haben, ich habe das gleiche Problem erfahren, wurde es nach dem Zuweisen von mehr freiem Speicherplatz behoben.
Ich habe auch einen ähnlichen Fehler erhalten Konnte nicht in die Ausgabedatei '..........................' schreiben - 'Der Verzeichnisname ist ungültig. "
Ich habe versucht, den Ordner zu löschen, ändere die Umgebungsvariablen wie oben vorgeschlagen (d. h.% USERPROFILE% oder% TEMP%), aber nichts schien zu funktionieren. Als ich die Ausgabe im Ausgabefenster / Fenster in VS 2008 erneut betrachtete, fand ich die folgende Zeile
"c: \ Windows \ Microsoft.NET \ Framework \ v3.5 \ Microsoft.Common.targets (3397,13): Fehler MSB6003: Die angegebene ausführbare Task "cmd.exe" konnte nicht ausgeführt werden Lauf. Der Verzeichnispfad konnte nicht gefunden werden: C: \ Benutzer \ Administrator \ AppData \ Local \ Temp \ 2 \ "
Diese Linie hat mich zur Lösung geführt. Ich habe gerade den Ordner "Nicht vorhanden 2" im Ordner "C: \ Benutzer \ Administrator \ AppData \ Local \ Temp" erstellt.
%Vor%Übrigens haben wir das nur bei all unseren Cloud-Instanzen bemerkt. Etwas mit Virtualisierung? .. weiß nicht wirklich
Tags und Links c# visual-studio-2008 compiler-errors csc