【问题标题】:Get Imports of a Project in Addin VS2008在 Addin VS2008 中获取项目的导入
【发布时间】:2012-08-28 06:56:39
【问题描述】:

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

有什么建议吗?

【问题讨论】:

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


    【解决方案1】:

    使用 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”。加载一个 等价于这个项目集合,先卸载这个项目。

    【讨论】:

      猜你喜欢
      • 2010-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多