EnvDTE - 编辑.sln文件中的项目依赖项

时间:2014-05-05 07:59:17

标签: templates dependencies projects-and-solutions wizard envdte

我在visual studio 2012上使用c#编写Visual Studio向导模板。

我遵循MSDN步骤:我创建了一个VS模板,然后创建了一个类库项目,其中包含一个实现IWizard接口的类,我配置了.vstemplate文件等...

现在,我的目标是写入RunFinished()功能代码,它执行以下操作:

在项目创建时,它使用ENVDTE,获取项目类型并添加到此项目的解决方案.sln文件依赖项。

例如:

用户创建了一个新项目" myProject "与那种" 8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942 ",我想签署这个项目取决于另一个项目" 9E779BC1-B9D6-425C-B552-CF04B5B786A2 "

在项目创建时,此文本将添加到.sln文件中:

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myProject", "myProject\myProject.vcxproj", "{20C9C96E-09FB-4DA3-A5C6-DE699FEF3916}"
EndProject

我希望我的代码能够编辑这个文本,所以它会像:

Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "myProject", "myProject\myProject.vcxproj", "{20C9C96E-09FB-4DA3-A5C6-DE699FEF3916}"
    ProjectSection(ProjectDependencies) = postProject
        {9E779BC1-B9D6-425C-B552-CF04B5B786A2} = {9E779BC1-B9D6-425C-B552-CF04B5B786A2}
    EndProjectSection
EndProject

至于现在我有这段代码:

DTE dte;  
dte = (DTE)automationObject; 
Solution solution;
solution = dte.Solution;
Projects ps = solution.Projects;

var item = ps.GetEnumerator();
while (item.MoveNext())
{
     var project = item.Current as Project;
     string kind = project.Kind;
     //TODO: edit project dependencies...          
}

你对这个问题有什么看法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

我找到了解决方案:

var bldDepends = Solution.SolutionBuild.BuildDependencies.Item(project.UniqueName);
bldDepends.AddProject("PATH\\project_name.vcxproj");

谢谢大家的帮助......