2009-07-16 4 views
0

Ich habe eine 2008-Lösung, die mir alle möglichen fehlenden Assembly-Referenzfehler gibt, wenn wir versuchen, sie mit MSBuild zu erstellen. Ich habe die Lösung in Visual Studio angesprochen und zuerst die gleichen Kompilierfehler bekommen. Viele fehlende Referenzen, also ging ich zu den fraglichen Projekten und erweiterte die Referenzen-Gruppe und sah das Ausrufezeichen in einem gelben Dreieck neben ein paar Referenzen. Ich klickte auf die Referenz, so dass ich den Pfad der Referenz im Eigenschaftsfenster überprüfen konnte und das verschwundene Referenzsymbol verschwand magisch. Keine Aufforderung zum Auschecken. Keine Aufforderung, etwas zu speichern. Die Referenz magisch aufgelöst. Ich bemerkte auch, dass der Pfad vor und nach dem Verschwinden des fehlenden Referenzsymbols korrekt war. Ich habe das für jede fehlende Referenz getan (ungefähr 6 von ihnen) und habe Build Solution und alles kompiliert. Ich habe die Lösung in Visual Studio danach mehrmals neu geladen und es funktioniert immer noch, MSBuild wirft jedoch immer noch die gleichen Kompilierungsfehler.Fehlende Verweise mit MSBuild, aber automatische Auflösung in Visual Studio 2008

Was gibt? Warum löste Visual Studio 2008 Team System Developer Edition diese Verweise auf magische Weise und kompilierte die Lösung und MSBuild kann sie immer noch nicht finden? Jede Hilfe wäre willkommen. Vielen Dank.

+1

Es könnte helfen, wenn Sie gepostet haben, was in Ihrer Build-Datei ist. – CAbbott

Antwort

1

Das Problem wurde behoben, als wir unsere Entwicklungsabteilung wieder in die Hauptfiliale fusionierten. Ich schleiche den Verdacht, dass die Pfade zu den Referenzen auf "/ Dev /" in unserem Hauptzweig anstatt "/ Main /" zeigen und dass VS 2008 die Referenz für uns automatisch aktualisiert, wo MSBuild nicht.

Ich denke, dies kann auftreten, wenn Sie einen Verweis nach Datei (über die Registerkarte Durchsuchen) hinzufügen, anstatt eine Referenz über die Registerkarte Projekt hinzuzufügen.

0

Versuchen Sie, die Lösung von einem anderen PC aus zu öffnen, eventuell mit einem Express-Geschmack von VS2008. Auf diese Weise erhalten Sie möglicherweise eine aussagekräftigere Fehlermeldung. Mein letzter Ausweg besteht darin, das Projekt/die Lösung von Grund auf neu zu erstellen.

0

Ich hatte ein solches Problem vor ein paar Jahren. Was sind die Versammlungen, die Sie vermissen? Gehören sie zu einem Microsoft-Produkt, z. SQL Server oder Büro?

Das Visual Studio-Dialogfeld "Referenz hinzufügen" uses registry locations to store paths to assemblies (siehe "So zeigen Sie eine Baugruppe im Dialogfeld Referenz hinzufügen" auf halber Seite an). Dies ist zusätzlich zu Assemblys, die im GAC gespeichert sind. Wenn sich Ihre Assemblys an einem dieser Standorte befinden, kann dieses Problem möglicherweise auftreten, da ich vermute, dass diese von MSBuild nicht überprüft werden.

haben einen Blick auf diese Orte zu sehen, ob Ihre Baugruppen werden an einem dieser Pfade in der Registrierung verwiesen Wohnsitz:

 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\ 
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v2.0.50727\AssemblyFoldersEx 

Wenn Sie sicher sein wollen, dass Sie Ihre Baugruppen betrachten das Hinzufügen eines lib finden Ordner zu Ihrem Quellbaum. Sie können alle Baugruppen, auf die Sie angewiesen sind, in diesen Ordner kopieren und von dort aus darauf verweisen. Dies hat den zusätzlichen Vorteil, dass sich die Referenzen nicht ändern, wenn ein anderer Entwickler die Lösung für seine Maschine öffnet.