wake-up-neo.com

MSBuild-Fehler "CSC: Fehler CS2001: Quelldatei 'x' konnte nach dem Upgrade auf Visual Studio 2012 mit verknüpften Dateien nicht gefunden werden"

Nach dem automatischen Upgrade der Projektdatei für eine .NET 4.0-Webanwendung, um mit Visual Studio 2012 zu arbeiten, funktionierte zunächst alles in Ordnung. Beim Kompilieren erhielt ich jedoch viele Fehler wie diese:

Beschreibung: Quelldatei '..\..\..\..\..\Dateipfad' wurde nicht gefunden

Datei: CSC

Beim Versuch, mit MSBuild zu erstellen (wobei nur der vollständige Pfad des Projekts ohne zusätzliche Parameter übergeben wird) in der "Developer Command Prompt for VS2012", habe ich grundsätzlich die gleichen Fehler erhalten:

"CSC: Fehler CS2001: Quelldatei 'x' konnte nicht gefunden werden"

Alle Fehler beziehen sich auf Linked Files (aspx, cs usw.), die sich in anderen Webanwendungsprojekten befinden, die sich in einer anderen Tiefe in unserem Code-Zweig befinden (deshalb alle '... \' am Anfang der Pfade )

Für mich sieht es aus wie ein Problem mit der Datei Length. Ich hatte vor einiger Zeit das gleiche Problem, als ich die Projekte auf unserem CI-Server mit MSBuild erstellte. Ich konnte es verwalten, indem ich die Projektdateien vor dem Erstellen mit ihnen bearbeitete Ein benutzerdefiniertes Skript, ohne den Zweig verschieben oder die Tiefe der Projekte reduzieren zu müssen. Ich musste nichts verschieben. Zu der Zeit war es wichtig, dass Entwickler, die Visual Studio 2010 verwenden, alles ohne Probleme kompilieren konnten. Ich habe dadurch gelernt, dass das Kompilieren/Bauen mit MSBuild anders war als bei DevEnv/VS, und zum Beispiel unterstützte MSBuild keine Gebäude-Setup-Projekte und DevEnv tat dies.

Da dies nun mit VS 2012/DevEnv 2012 geschieht und VS 2012 keine Setup-Projekte mehr unterstützt (wie msbuild), und VS/DevEnv das gleiche Problem mit der Dateilänge haben, sieht es so aus, als ob VS 2012 endlich msbuild verwendet oder unter der Haube sind fester integriert, jedoch habe ich keinen Artikel gefunden, um dies zu bestätigen. 

Das Ändern der Zweigstruktur bzw. der Tiefe der Projekte ist aus verschiedenen Gründen (momentaner Codebasis, hoher Projektanzahl, Risiko, Timing, Aufwand usw.) derzeit nicht möglich. 

Hat jemand eine alternative Lösung oder ein Update für dieses Problem in Visual Studio 2012?

Grüße,

P.D .: Übrigens: Ich habe diesen Beitrag bereits geprüft MSBuild-Fehler mit verknüpften Dateien aber wie ich schon sagte, bevor Sie die Pfade ändern, ist dies momentan keine Option.

32
Jhonatan P

Ich weiß, dass ich diese Frage vor einiger Zeit gestellt habe, aber für den Wert, den wir wert waren.

  • Suchen der Dateien, die als zu lang gemeldet wurden. 
  • Reduzieren Sie die vollständige Pfadlänge dieser Dateien, indem Sie die Länge des Namens und/oder Der Länge des Containerordners oder die Verschachtelungsstufe Reduzieren. Reduzieren Sie daher die gesamte Weglänge.
  • Aktualisieren Sie die Verknüpfungen der geänderten Dateien (erneute Verknüpfung) für die abhängigen Projekte.

Dies löste das Problem mit Visual Studio 2012 auf Entwicklerarbeitsstationen und auf unseren CI/Deploy-Servern, die MSbuild verwendeten.

Für mein Szenario war dieser Ansatz weniger riskant und bedeutete weniger Aufwand als das Verschieben kompletter Projekte/Lösungen, um die Verschachtelungsebene von Ordnern zu reduzieren, oder die Ordnernamen zu reduzieren und alle Referenzen des abhängigen Projekts/der entsprechenden Lösungen zu aktualisieren.

1
Jhonatan P

Versuchen Sie, die Build-Protokolle abzurufen. 

http://msdn.Microsoft.com/de-de/library/vstudio/ms171470.aspx

es scheint, dass die csc-Task die Quelldatei nicht finden konnte. Ein Grund dafür ist, dass Sie die falsche Datei importieren. Sie müssen die Projektdatei mit dem normalen Texteditor bearbeiten.

4
N.K

Ich habe eine Lösung für dieses Problem gefunden. Wenn Sie die Datei verknüpfen, wird Ihr relativer Pfad von msbuild erkannt. Von dort aus gehen Sie zu einem langen Pfad zurück. Sie können ihn jedoch in der Projektdefinition mit einem Rechtsklick/Entladen des Projekts ändern/und ändern Sie den Pfad von ../../../ in $(SolutionDir)/../.., bis Sie die zu verknüpfende Datei finden. Hinweis: Es erweitert das Zeichen von 255 auf 300 Zeichen.

2
user5688731

Ok, ich habe das getroffen und heute gelöst. Ich habe es gefunden, indem ich einem msdn-Tutorial folgte ( https://msdn.Microsoft.com/de-de/library/ms379563%28v=vs.80%29.aspx ) und hier ist der Befehl, der für mich brach:

csc /t:library /out:MyCodeLibrary.dll simpleType.cs

Gib mir die Nachricht

error CS2001: Source file 't:librabry' could not be found

Das funktionierte, nachdem der ursprüngliche Befehl folgendermaßen geändert wurde:

csc /target:library /out:MyCodeLibrary.dll simpleType.cs

Ich bin nicht sicher, warum die Kurzversion des/target-Flags diesen Fehler verursacht, aber ich habe nirgendwo sonst online gefunden, dass diese Ursache speziell festgehalten wurde. Daher wollte ich sie hier aufzeichnen.

1
Jomtung

Dieses Problem trat für mich auf, als ich zu einer früheren Version eines Git-Repositorys zurückkehrte. Anscheinend habe ich die Projektdatei nicht zum Repo hinzugefügt, also hat die Projektdatei bei ihrer Rücksetzung auch nicht die Projektdatei zurückgesetzt. Ich habe die fehlende .cs-Datei aus dem Projekt ausgeschlossen, indem ich im Projekt-Explorer auf die fehlende Datei geklickt habe. Es war leicht zu finden, da es mit einem Warndreieck markiert war. Erstellen Sie dann die gesamte Lösung neu.

0
Weej
  1. Stellen Sie sicher, dass Sie über die neueste Version der verknüpften Dateien aus den anderen Projekten verfügen. Visual Studio erhält sie NICHT automatisch, wenn sie zu einem anderen Projekt gehören.
  2. Überprüfen Sie, ob die verknüpften Pfade tatsächlich korrekt sind. Sie können mit Hilfe des SysInternals ProcMon-Tools überwachen, auf welche Dateien VS.NET und MSBUILD zugreifen möchten (filtern Sie nach Prozessnamen und filtern Sie alle Erfolge).
  3. Wenn Sie vermuten, dass die Pfadlänge das Problem ist (dies ist auch im ProcMon-Tool sichtbar), können Sie versuchen, sie zu verkürzen, indem Sie auf den absoluten Pfad (C:\X\Y\Z) anstelle eines relativen Pfads ( ......\Z). Der Speicherort der verknüpften Dateien kann dann unverändert bleiben.
0
Marc Selis

Meine 2 Cents für dieses Problem ... In meinem Fall hatte ich eine Datei in einem Projekt erstellt (dh ConfigModel) und ich hatte einen Link zu dieser Datei in einem anderen Projekt, aber als ich die Datei ConfigModel im ersten Projekt in LoginModel umbenannte Beispielsweise wurde der Link im zweiten Projekt nicht umbenannt, was zu diesem Fehler führte.

0
Thierry
  1. Überprüfen Sie, ob die im Fehler genannten Dateien nicht im entsprechenden Ordner vorhanden sind.
  2. Wenn dies nicht beabsichtigt ist, bearbeiten Sie die .csproj-Dateien und entfernen Sie die Referenz für diese Dateien.
  3. Bauen Sie erneut auf.
0
Elayamathy