Wenn ich eine A.sln erstellen, die 2 Projekte enthält B.csproj und C.csproj, die interne Projektreferenzen hat, wirft Referenzfehler in MSBuild. Aber wenn ich B.csproj und C.csproj separat in MSBuild erstelle, wirft es keine Fehler. Und auch das Erstellen von A.sln in VS IDE wirft keine Fehler. Ich verwende .NET 2.0 Framework. Unten finden Sie die Skripte, die zum Erstellen der SLN und Projs verwendet wurden.MSBuild erstellt Projekte mit Projektreferenzen korrekt, aber nicht aus der Lösung
MSBuild "<path>/A.sln" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\A.sln.log /verbosity:normal
MSBuild "<path>/B.csproj" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\B.csproj.log /verbosity:normal
MSBuild "<path>/C.csproj" /p:Configuration=Release /p:StartupObject="" /p:WarningLevel=4 /p:Optimize=true /t:rebuild /l:Filelogger,Microsoft.Build.Engine;logfile=F:\C.csproj.log /verbosity:normal
Edit:
die geworfen werden alle Fehler von Code für refernces fehlt (alle sind Projektreferenzen). Ich bekomme nur drei Arten von Fehlern, wie unten angegeben.
Fehler CS0012: Der Typ 'X' ist in einer Baugruppe definiert, die nicht referenziert wird. Sie müssen eine Referenz zur Baugruppe 'Y, Version = 2.0.0.0, Culture = neutral, PublicKeyToken = aad4cbe5d7c27078' hinzufügen.
Fehler CS0234: Der Typ oder Namespace Namen 'X' existiert nicht im Namespace 'Y' (Sie eine Montagereferenz fehlen?)
Fehler CS0246: Der Typ oder Namespace Name ' X‘konnte nicht gefunden werden (sind Sie eine using-Direktive oder ein Montage Referenz fehlt?)
ich gelöscht alle zuvor gebaut DLLs von Build-Pfade vor von beiden IDE und MSBuild zu bauen. Aber IDE funktioniert einfach gut und zeigt keinen Verweis fehlt Indikator im "Refrences" Abschnitt für das Projekt.
Keine Referenzpfade manuell in IDE hinzugefügt.
Ein weiteres Update:
ich, dass nur bemerkt, wenn ich beide öffnen die Projekte aus der Lösung, Referenzen korrekt in IDE zeigen. Aber wenn ich die Projekte einzeln in der IDE öffne, schleichen sich die fehlenden Referenzen, die ich in MSBuild erwähnt habe, ein. Sehr seltsam.
So
buiilding zusammenzufassen .proj in MSBuild - Gute
buiilding .proj in IDE - Fehler
buiilding SLN in MSBuild - Fehler
buiilding SLN in IDE - Gut
Sieht aus sehr wierd für mich. Hilfe viel viel geschätzt.
Immer wenn Sie eine Frage stellen und sagen, dass ein Fehler vorliegt, hilft es wirklich, den Fehler auszuschneiden und einzufügen. Dies gilt für Ausnahmen, Compiler Fehler, Build Fehler ... –
BTW, wenn es die beiden Projekte einzeln ohne Probleme erstellt, dann frage ich mich, ob die beiden Projekte die Projektreferenzen benötigten. OTOH, dies könnte aufgrund der jüngsten Funktion funktionieren, die es MSBUILD ermöglicht, bei Projektverweisen "schlau" zu sein. Da ich dieses Feature nie verstanden habe, kann ich das nicht ausschließen; aber ich empfehle Ihnen, zu bestätigen, ob alle Projektreferenzen erforderlich sind, und ob die Neuerstellung von B die Neuerstellung von C verursacht. –
@blntechie: Danke für das Update. Ich schlage vor, dass Sie den Lösungs-Explorer verwenden. Wählen Sie jede Referenz der Reihe nach aus und sehen Sie sich die Details im Eigenschaftenfenster an. Siehst du etwas Seltsames, wie eines in obj und die anderen in der Tonne? Wenn Sie keine Referenzpfade haben, können Sie Ihre .csproj.user-Dateien nicht ansehen, um sicherzugehen, dass es wirklich keine gibt? –