2016-04-16 8 views
0

Wie kann ich den Wert der MsBuild-Variable erhalten (zB $ (MSBuildToolsPath), $ (MSBuildAssemblyVersion), $ (TargetFrameworkIdentifier) ​​usw.). Ich muss den Wert auf der Csharp-Seite abrufen, aber ich kann auf Msbuild.exe zugreifen, wenn es nicht aus dem Csharp-Code verfügbar ist.Wie bekomme ich den Wert der MsBuild-Variablen

+0

Es ist nicht wirklich klar, was Sie wollen - versuchen Sie, ein Msbuild-Projekt programmatisch zu laden/zu erstellen? Was hast du bisher versucht? Es gibt genügend Beispiele dafür, wie man programmgesteuert C# erstellt und Projekteigenschaften erhält/setzt. – stijn

+0

@stijn Ja, ich führe das Msbuild-Ziel von C# -Seite von BuildManager. Dazu muss ich alle Ziele aus der Projektdatei holen. Aber msbuild unterstützt das Importieren von Projekten, die msbuild-Variablen verwenden können. Also muss ich die Fähigkeit haben, den Wert der Variablen zu erhalten ... – Serg046

Antwort

1

BuildManager und dergleichen sind nur zum Bauen; MS entschied sich, die MsBuild API in verschiedenen Namespaces nach Funktionalität aufzuteilen. Sobald Sie wissen, dass es nicht zu schwierig ist herauszufinden, was Sie brauchen: Sie müssen nur Eigenschaften auswerten, so dass die Project Klasse aus dem Evaluierungs-Namespace wie die richtige Wahl erscheint. Es hat ein Properties-Member, das alle Eigenschaften freigibt:

var project = new Microsoft.Build.Evaluation.Project(@"my.vcxproj"); 
foreach(var property in p.Properties) 
{ 
    System.Console.WriteLine("{0} = {1}", 
    property.Name, property.EvaluatedValue); 
} 
Verwandte Themen