Verwenden von MSBuild
MSBuild stellt ein gut definiertes, erweiterbares XML-Format zum Erstellen von Projektdateien bereit, die Projektelemente vollständig beschreiben, die erstellt, erstellt werden müssen, und Buildkonfigurationen.
Allgemeine MSBuild-Überlegungen
MSBuild-Projektdateien, z. B. Visual C# .csproj- und Visual Basic.vbproj-Dateien, enthalten Daten, die zur Erstellungszeit verwendet werden, können aber auch Daten enthalten, die zur Entwurfszeit verwendet werden. Buildzeitdaten werden mithilfe von MSBuild-Grundtypen gespeichert, einschließlich Item Element (MSBuild) und Property Element (MSBuild). Entwurfszeitdaten, die für den Projekttyp und alle zugehörigen Projektuntertypen spezifisch sind, werden in Freiform-XML gespeichert.
MSBuild unterstützt keine systemeigene Unterstützung für Konfigurationsobjekte, stellt jedoch bedingte Attribute für die Angabe konfigurationsspezifischer Daten bereit. Beispiel:
<OutputDir Condition="'$(Configuration)'=="release'">Bin\MyReleaseConfig</OutputDir>
Weitere Informationen zu bedingten Attributen finden Sie unter "Bedingte Konstrukte".
Erweitern von MSBuild für Ihren Projekttyp
MSBuild-Schnittstellen und APIs können in zukünftigen Versionen von Visual Studio geändert werden. Daher ist es umsichtig, die MPF-Klassen (Managed Package Framework) zu verwenden, da sie die Abschirmung vor Änderungen ermöglichen.
Das Verwaltete Paketframework für Projekte (MPFProj) stellt Hilfsklassen zum Erstellen und Verwalten eines neuen Projektsystems bereit. Sie finden die Quellcode- und Kompilierungsanweisungen unter MPF für Projekte – Visual Studio 2013.
Die projektspezifischen MPF-Klassen sind wie folgt:
Klasse | Implementierung |
---|---|
Microsoft.VisualStudio.Package.ProjectNode |
IVsProject3 IVsCfgProvider2 IPersistFileFormat IVsSolutionEvents |
Microsoft.VisualStudio.Package.ProjectFactory |
IVsProjectFactory |
Microsoft.VisualStudio.Package.HierarchyNode |
IVsHierarchy |
Microsoft.VisualStudio.Package.ProjectConfig |
IVsCfg IVsProjectCfg IVsBuildableProjectCfg IVsDebuggableProjectCfg |
Microsoft.VisualStudio.Package.SettingsPage |
IPropertyPageSite |
Microsoft.VisualStudio.Package.ProjectElement
klasse ist ein Wrapper für MSBuild-Elemente.
Einzelne Dateigeneratoren im Vergleich zu MSBuild-Aufgaben
Auf einzelne Dateigeneratoren kann nur zur Entwurfszeit zugegriffen werden, aber MSBuild-Aufgaben können zur Entwurfszeit und zur Erstellungszeit verwendet werden. Verwenden Sie daher MSBuild-Aufgaben, um Code zu transformieren und zu generieren. Weitere Informationen finden Sie unter "Benutzerdefinierte Tools".