我需要在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程序集)。
有什么建议吗?
答案 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”。要加载 相当于这个项目集合,首先卸载这个项目。