MS-Build BeforeBuild wird nicht ausgelöst

Ich passe ein @ .csproj project, um einige benutzerdefinierte Tasks vor dem Hauptbuild auszuführen. Ich kann die Aufgaben jedoch überhaupt nicht ausführen.

Ich habe das @ nicht kommentie<Target Name="BeforeBuild" /> Element im.csproj Datei und fügte eine einfache Nachrichtenaufgabe hinzu, aber wenn ich erstelle, erscheint die Nachricht nicht in meiner Ausgabe, so dass es so aussieht, als würde die Aufgabe nicht ausgeführt. Dieses Fragment gibt also die Nachricht nicht aus;

Listing 1: Keine Nachricht erscheint

<Target Name="BeforeBuild">
    <Message Text="About to build ORM layer" Importance="normal" />
</Target>

Allerdings, wenn ich mit einigen der Attribute schrauben, kann ich das @ bekomm.csproj überhaupt nicht ausführen;

Listing 2: Ein MSBuild-Konfigurationsfehler

<Target Name="BeforeBuild">
    <Message Text="About to build ORM layer" XXImportance="normal" />
</Target>

Beachten Sie dasXXImportance Attribut. Der Build-Fehler, den ich bekomme, ist

My.csproj(83,46): error MSB4064: The "XXImportance" parameter is not supported by the "Message" task. Verify the parameter exists on the task, and it is a settable public in,stance property.

Dies deutet darauf hin, dass das XML analysiert wird, dass dasMessage class wurde gefunden und die Klasse wird für die verfügbaren Eigenschaften übernommen.

Warum würde die Aufgabe nicht ausgeführt?

Ich verwende das 3.5 Framework.

UPDATE 1: Auf den Rat von @ Martin habe ich versucht, MSBuild auf der Konsole auszuführen, und diese Fehlermeldung erhalten;

c:\path\to\my.csproj(74,11): error MSB4019: The imported
project "C:\Microsoft.CSharp.targets" was not found. Confirm
that the path in the <Import> declaration is correct, and that
the file exists on disk.

Line 74 liest;

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

UPDATE 2: Ich kompiliere in VS2008, das den C # 3-Compiler verwendet, aber das Projekt, das ich kompiliere, ist ein Framework 2.0-Projekt. Wenn der Build über die Befehlszeile ausgeführt wird (siehe UPDATE 1), scheint er fehlzuschlagen, da eine Unklarheit darüber besteht, wo das @ stehMicrosoft.CSharp.targets Datei ist angegeben.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage