Construire par programme un projet
J'ai besoin de construire un projet par programme pour un .csproj je suis de la création à la volée.
En cherchant sur Google j'ai trouvé les classes et les API fournies par le MS pour le Moteur MSBuild. Avec cette information, j'ai créer un processus qui s'exécute msbuild.exe et puis lit la sortie, mais maintenant je veux utiliser l'espace de noms Microsoft.Build.Execution
pour construire le projet. C'est mon programme:
public class Compiler
{
private static string locationOfMSBuilldEXE = "";
public static void Build(string msbuildFileName)
{
BuildManager manager = BuildManager.DefaultBuildManager;
ProjectInstance projectInstance = new ProjectInstance(msbuildFileName);
var result = manager.Build(new BuildParameters()
{
DetailedSummary = true
},
new BuildRequestData(projectInstance, new string[] { "Build" }));
var buildResult = result.ResultsByTarget["Build"];
var buildResultItems = buildResult.Items;
string s = "";
}
}
Les résultats montrent que ce bâtiment est très bien, mais j'ai besoin de savoir le détail de la sortie de la compilation et comment faire pour l'afficher. Il serait vraiment utile si quelqu'un peut me donner un lien vers un bon tuto ou un livre sur MSBuild.
source d'informationauteur Parv Sharma
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin pour ajouter une instance d'une classe qui implémente l'
ILogger
interface de votreBuildParameters
. Vous pouvez ajouter une nouvelle instance de l'un des bûcherons dans lesMicrosft.Build.Logging
espace de noms, ou vous pouvez mettre en œuvreILogger
vous-même, car il est très petit et il y a une classe d'assistance dans leMicrosoft.Build.Utilities
espace de noms appeléLogger
qui est facile à étendre.Construire des bûcherons
ILogger interface
Enregistreur de helper
Merci @ritchmelton. Si j'ai tout compris moi-même.
Voici mon code : j'ai utilisé un construit dans l'enregistreur de
ConsoleLogger
Si vous voulez juste pour construire un projet ou une solution, sans élaborer les paramètres, vous pouvez le faire plus simplement. Pseudo:
Que c'est! BuildParameters et ainsi de suite pour tout les scénarios avancés. Visual Studio utilise elle-même.
Dan (msbuild dev)