解决方案文件夹的依赖关系

时间:2014-11-03 09:41:15

标签: c# visual-studio-2010 directory solution vsx

我创建了一些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));
    }                        
}

1 个答案:

答案 0 :(得分:0)

使用自动化模型EnvDTE可以更轻松地创建嵌套解决方案文件夹,也可以从包中使用。

请参阅:

如何在另一个解决方案文件夹中创建解决方案文件夹 http://blogs.msmvps.com/carlosq/2013/12/03/how-to-create-a-solution-folder-inside-another-solution-folder/