Я создал шаблон, который открывает форму перед созданием ресурса (реализовано мастером).
В этой форме вы можете вставить путь к папке, и программа должна импортировать этот каталог и все дерево (да, как перетащить папку в проект, но я хочу сделать это программно).
В настоящее время я могу импортировать только все файлы в дереве, но все они находятся на одном уровне, и я не могу импортировать папки.
Для попытки импортировать папку я создал этот класс:
class REM_Folder_Adder
{
private EnvDTE80.DTE2 dte;
private EnvDTE.Project p;
//dte = ...
//
public REM_Folder_Adder (Object o, EnvDTE.Project project)
{
p = project;
p = dte.Solution.Projects.Item(o);
}
//AddFolderAndFiles(project, "My Folder");
public void CreateFiles(string folderFullName)
{
System.IO.File.AppendAllText(System.IO.Path.Combine(folderFullName, "dummy1.cs"), "using System;");
System.IO.File.AppendAllText(System.IO.Path.Combine(folderFullName, "dummy2.cs"), "using System.Windows.Forms;");
}
public void AddFolderAndFiles(string folderName)
{
EnvDTE.ProjectItem folder;
string folderFullName;
string[] fileFullNames;
try
{
folder = p.ProjectItems.AddFolder(folderName);
folderFullName = folder.FileNames[0];
CreateFiles(folderFullName);
fileFullNames = System.IO.Directory.GetFiles(folderFullName);
foreach (string fileFullName in fileFullNames)
{
folder.ProjectItems.AddFromFile(fileFullName);
}
}
catch (Exception ex)
{
System.Windows.Forms.MessageBox.Show(ex.ToString());
}
}
}
Теперь мои вопросы:
1) Это правильный / простой способ сделать то, что я хочу сделать?
2) Какой параметр я должен передать как «Объект o» в:
public REM_Folder_Adder (Object o, EnvDTE.Project project)
{
p = project;
p = dte.Solution.Projects.Item(o);
}