3 Stimmen

Wie verwende ich Microsoft.Build.BuildEngine, um ein Silverlight-Projekt zu erstellen?

Ich verwende die Microsoft.Build.BuildEngine, um eine Reihe von Projekten zu erstellen. Projekte, die Silverlight nicht verwenden, werden korrekt erstellt, während Projekte, die Silverlight verwenden, nicht erstellt werden. Alle diese Projekte (Silverlight und Nicht-Silverlight) lassen sich problemlos über Visual Studio 2008 erstellen. Ich erhalte die Fehlermeldung:

Fehler CS0234: Der Typ oder Namespace-Name 'SilverlightControls' existiert nicht im Namespace 'System.Web.UI' (fehlt eine Assembly-Referenz?)

Ich habe System.Web.Silverlight zu dem Projekt hinzugefügt, das den Build mit Microsoft.Build.BuildEngine durchführt. Ich bin in der Lage, diesen Namespace in dem Projekt zu sehen, das den Build ebenfalls durchführt (es scheint also, dass das Projekt, das den Build durchführt, Zugriff auf System.Web.UI hat).

Haben Sie eine Idee, wie ich diesen Fehler vermeiden kann?


Ich habe die Ausführlichkeit des Builds durch VS2008 erhöht und mit dem von der Microsoft.Build.BuildEngine erstellten Protokoll verglichen. Es sieht aus wie die Microsoft.Build.BuildEngine ist Zeilen wie produzieren:

Gilt als "c: \Program Dateien \Reference Baugruppen \Microsoft\Framework \v3.5\System.Web.Silverlight.dll ", aber das gab es nicht.

Das gibt es an dieser Stelle nicht, oder doch? Es gibt tatsächlich eine Reihe von Orten, an denen nach dieser DLL gesucht wird und sie nicht gefunden wird. Ich habe den Verweis mit Rechtsklick, Verweis hinzufügen, .Net, hinzufügen hinzugefügt. Es scheint keine System.Web.Silverlight.dll auf meinem Rechner zu geben (was seltsam ist, da das Projekt mit VS2008 kompiliert wird).

Vergleich der möglicherweise relevanten Abschnitte der beiden Protokolle: Microsoft.Build.BuildEngine

Für SearchPath "{GAC}". Berücksichtigt "System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL", das nicht im GAC gefunden wurde. der GAC gefunden wurde.

Visual Studio 2008

System.Web.Silverlight, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL


Ich habe System.Web.Silverlight manuell zu dem Pfad hinzugefügt, in dem die Microsoft.Build.BuildEngine danach gesucht hat (ich habe es aus dem Ausgabeverzeichnis kopiert, als ich das Projekt über VS2008 erstellt habe). Dies löste das Problem, aber ich erhalte jetzt die folgenden Fehler auf die Silverlight-Komponenten der Lösung:

C:\Program Dateien \MSBuild\Microsoft\Silverlight \v2.0\Microsoft.Silverlight.Common.targets (95,9): Fehler : Das Silverlight 2 SDK ist nicht installiert.

Irgendwelche Ideen?

3voto

ChrisHDog Punkte 4271

In der Anwendung, die die Microsoft.Build.BuildEngine ausführt, habe ich den Build-Typ von Any CPU auf x86 geändert. Dadurch ist die Anwendung nun in der Lage, das Ziel wie erwartet zu erstellen.

1voto

Brian Punkte 115257

Sie sind also programmatisch Gebäude mit dem MSBuild-APIs?

Es kann nützlich sein, einen ILogger (der z.B. nur auf der Konsole ausgibt) zu engine.Loggers hinzuzufügen und die Ausgabe mit dem Ausgabefenster in VS zu vergleichen (nachdem man z.B. 'tools \options\project & Lösungen \build & laufen \msbuild output verbosity' auf verbose)... scheint es so, als ob die Umgebung irgendwie bewirkt, dass Assemblies unterschiedlich aufgelöst werden?

0voto

Johny Punkte 19

Setzen Sie den Build-Typ des Projekts auf Beliebig. Das hilft. Viel Spaß beim Programmieren...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X