2012-08-28 57 views
0

我需要在Addin VS 2008 - .NET 3.5中獲得項目列表「Imports」。在Addin VS2008中獲取項目導入

在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組件未找到)。

有什麼建議嗎?

回答

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」。要將等效項目 加載到此項目集合中,請首先卸載此項目。