0

我需要在 Addin VS 2008 - .NET 3.5 中获取项目的“导入”列表。

在 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 程序集)。

有什么建议么?

4

1 回答 1

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”。要将等效项加载到此项目集合中,请先卸载此项目。

于 2012-08-28T08:12:20.037 回答