获取Addin VS2008中的项目导入

时间:2012-08-28 06:56:40

标签: visual-studio-2008 msbuild visual-studio-addins envdte

我需要在Addin VS 2008 - .NET 3.5中获得项目列表“Imports”。

在VS2010 - .NET 4.0中,我使用:

EnvDTE.Project project = GetProject();
var project1 = new Microsoft.Build.Evaluation.Project(project.FullName);
project1.Xml.Imports.ForEach(i => {
                    Trace.WriteLine("\t Import Project: " + i.Project); 
});

但在VS2008中失败(未找到Microsoft.Build程序集)。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

使用VS2008和.net 3.5,Microsoft .Build.BuildEngine.Engine在.net 4.0中已过时

    var engine = new Microsoft.Build.BuildEngine.Engine();
    var proj = new Microsoft.Build.BuildEngine.Project(engine);
    proj.Load(project.FullName);
    foreach (Microsoft.Build.BuildEngine.Import import in proj.Imports)
    {
        contieneTargets = import.ProjectPath.ContainsWithStringComparison("Microsoft.VisualStudio.SharePoint.targets", StringComparison.InvariantCultureIgnoreCase);
        Trace.WriteLine("\t Import Project: " + import.ProjectPath);
        if (contieneTargets) break;
    }

只有一个问题:当多次执行此代码时,我收到一些项目已加载的错误。

  

System.InvalidOperationException:等效项目(项目   具有相同的全局属性和工具版本)已经存在   在项目集合中,路径为“test.csproj”。要加载   相当于这个项目集合,首先卸载这个项目。