2014-11-03 105 views
1

我创建了一些visual studio扩展,并以编程方式创建解决方案文件夹。 但我不知道如何从另一个解决方案文件夹创建一个依赖项一个解决方案文件夹? 任何人都可以帮助我解决这个问题吗?谢谢!解决方案文件夹的依赖关系

|--- SolutionFolder 
|   |--- SolutionFolder 
|   |--- SolutionFolder 
|--- SolutionFolder 

这里是我的代码:

(object sender, EventArgs args) => 
{ 
    Guid slnFldrGuid = new Guid("2150E333-8FDC-42A3-9474-1A3956D46DE8"); 
    Guid iidProject = typeof(IVsHierarchy).GUID; 

    IVsSolution solution = GetService<IVsSolution, SVsSolution>(); 
    IVsHierarchy parent = UIShellUtilities.GetSelectedHierarchy(); 
    IVsHierarchy nested = null; 

    IntPtr project = IntPtr.Zero; 
    int canceled = 0; 

    if ((null != solution) && (null != parent)) 
    { 
     IVsProjectFactory factory = null; 

     ErrorHandler.ThrowOnFailure(solution.GetProjectFactory(
      0, new Guid[] { slnFldrGuid }, null, out factory)); 

     try 
     { 
      ErrorHandler.ThrowOnFailure(factory.CreateProject(
       null, null, "New My Folder", 0, ref iidProject, out project, out canceled)); 

      if (project != IntPtr.Zero) 
      { 
       nested = Marshal.GetTypedObjectForIUnknown(project, typeof(IVsHierarchy)) as IVsHierarchy; 

       Debug.Assert(nested != null, "Nested hierarchy could not be created"); 
       Debug.Assert(canceled == 0); 
      } 
     } finally 
     { 
      if (project != IntPtr.Zero) 
       Marshal.Release(project); 
     } 

     uint itemid = VSConstants.VSITEMID_ROOT; 

     // Link into the nested VS hierarchy. 
     //ErrorHandler.ThrowOnFailure(nested.SetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ParentHierarchy, parent)); 
     //ErrorHandler.ThrowOnFailure(nested.SetProperty(VSConstants.VSITEMID_ROOT, (int)__VSHPROPID.VSHPROPID_ParentHierarchyItemid, (object)itemid)); 
    }       
} 

回答