2 votes

Existe-t-il des analyseurs de fichiers msbuild ?

Je cherche un analyseur de fichiers MSbuild. Actuellement, j'ai écrit le mien qui n'est pas complet... mais j'ai l'impression de réinventer la roue en construisant quelque chose qui existe sûrement déjà.

5voto

cheerless bog Points 476

Microsoft.Build.Construction.XXX dans microsoft.build.dll (version 4.0+) est un analyseur syntaxique "brut" des fichiers MSBuild. Il est puissant et complet et analogue au DOM XML. Il travaille sur un seul fichier, sans faire d'évaluation. Il est utile par exemple lorsque vous voulez exécuter un script sur une arborescence de projets pour les modifier d'une manière ou d'une autre, par exemple pour ajouter une déclaration d'importation commune.

Microsoft.Build.Evaluation.XXX travaille sur des projets évalués - c'est-à-dire avec toutes les propriétés évaluées, les fichiers importés et ainsi de suite. Il est utile dans un environnement de développement - vous pouvez lire les fichiers et les propriétés du projet, ajouter de nouveaux fichiers, etc. Visual Studio l'utilise à cette fin.

Avant la version 4.0, il existait un modèle d'objet complètement différent, beaucoup plus limité et moins complet dans microsoft.build.engine.dll. Il est toujours fourni avec la version 4.0 mais ne peut pas gérer certaines syntaxes de la version 4.0. Il est obsolète. Il est obsolète.

Je les ai conçus et mis en œuvre, je serais donc intéressé par vos commentaires si vous en avez.

1voto

Quelques informations que j'ai trouvées ici... http://social.msdn.microsoft.com/Forums/en/msbuild/thread/b3db4d7c-b7d1-4958-9145-bfd34cc75320

En outre, il existe un petit projet contenant des échantillons de haut niveau : http://code.msdn.microsoft.com/msbuildho

using Microsoft.Build.Construction;
using Microsoft.Build.Evaluation;
using System.Linq;

class Program
{
    static void Main(string[] args)
    {
        Project testProj = new Project();
        testProj.Xml.AddTarget("BuildProjects");
        foreach (ProjectTargetElement pti in testProj.Xml.Targets.Where(pti => pti.Name == "BuildProjects"))
        {
            pti.AddTask("MSBuild");   
        }   
        testProj.Save(@"C:\testProj.proj");
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X