Я создаю расширение 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));
}
}
Создание вложенных папок решений значительно проще с использованием модели автоматизации EnvDTE, которая также может использоваться из пакетов.
Видеть:
Как создать папку решения внутри другой папки решений http://blogs.msmvps.com/carlosq/2013/12/03/how-to-create-a-solution-folder-inside-another-solution-folder/