любые парсеры файлов msbuild доступны? - PullRequest
2 голосов
/ 19 декабря 2010

Я ищу анализатор файлов MSbuild. В настоящее время я написал свою собственную, которая не завершена ... но я чувствую, что я заново изобретаю конструкцию колеса, которая наверняка уже существует.

Ответы [ 2 ]

5 голосов
/ 18 июля 2011

Microsoft.Build.Construction.XXX в microsoft.build.dll (версия 4.0+) - это «сырой» парсер файлов MSBuild. Это мощный и полный и аналог XML DOM. Он работает на одном файле, без оценки. Это полезно, например, когда вы хотите запустить скрипт над деревом проектов, чтобы каким-то образом их редактировать, возможно, добавить общий оператор импорта.

Microsoft.Build.Evaluation.XXX работает с оцененными проектами, т. Е. Со всеми оцененными свойствами, извлеченными импортированными файлами и т. Д. Это полезно в среде разработки - вы можете считывать файлы и свойства в проекте, добавлять новые файлы и так далее. Visual Studio использует его для этой цели.

До версии 4.0 в microsoft.build.engine.dll существовала совершенно другая, гораздо более ограниченная и менее полная объектная модель. Он все еще поставляется с 4.0, но не может обрабатывать синтаксис 4.0. Это устарело.

Я разработал и реализовал их, поэтому я буду заинтересован в обратной связи, если у вас есть.

1 голос
/ 13 января 2011

Некоторая информация, которую я нашел здесь ... http://social.msdn.microsoft.com/Forums/en/msbuild/thread/b3db4d7c-b7d1-4958-9145-bfd34cc75320

Кроме того, есть небольшие проекты с некоторыми высокоуровневыми образцами: 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");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...