我正在寻找一个MSbuild文件解析器。目前我已经写了我自己的并不完整...但我觉得我正在重新发明轮子构建肯定存在的东西。
答案 0 :(得分:5)
microsoft.build.dll(版本4.0+)中的Microsoft.Build.Construction.XXX是MSBuild文件的“原始”解析器。它功能强大,完整,类似于XML DOM。它适用于单个文件,不进行评估。例如,当您想要在项目树上运行脚本以某种方式编辑它们时,它可能很有用,可能是为了添加一个公共的import语句。
Microsoft.Build.Evaluation.XXX适用于已评估的项目 - 即,评估了所有属性,引入了导入的文件等等。它在开发环境中很有用 - 您可以读取项目中的文件和属性,添加新文件等等。 Visual Studio将其用于此目的。
在4.0之前,microsoft.build.engine.dll中存在一个完全不同,更有限且不太完整的对象模型。它仍然附带4.0但无法处理4.0语法。它已被弃用。
我设计并实施了这些,所以如果你有任何反馈,我会对反馈感兴趣。
答案 1 :(得分:1)
我在此处找到的一些信息...... 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");
}
}