如何 运行 从 VS 扩展命令自定义项目模板向导
How to run Custom Item Template Wizard from VS Extension command
我有带有自定义项模板的 VS 扩展。
这个项目使用它自己的向导,因为我需要一些信息来生成多个 类.
当我使用添加新项目添加此项目时 -> [我的项目] 显示自定义向导(表单)。
现在我想在解决方案资源管理器的上下文菜单中提供所有新项目类型。
我添加了上下文菜单,但我无法让它显示我的向导。
我试过了
dte.ItemOperations.AddNewItem( ... )
dte.LaunchWizard( ... )
ProjectItems.AddFromTemplate( ... )
但是 none 这些作品。
这与 中的问题类似,但我不明白解决方案。
我终于可以为我的自定义项目模板打开向导了。我向 LaunchWizard 方法传递了错误的参数。
Parent 可以从选择中取例如:
var parent= dte.SelectedItems.Item(1);
运行 向导:
internal static async System.Threading.Tasks.Task AddProjectItemFromTemplateAsync(DTE dte, object parent, string templateName, string defaultName)
{
ProjectItems items = null;
string fullPath = null;
string name = null;
if (parent is Project project)
{
items = project.ProjectItems;
fullPath = project.Properties.Item("FullPath").Value?.ToString();
name = project.Name;
}
else if(parent is ProjectItem projectItem)
{
items = projectItem.ProjectItems;
fullPath = projectItem.Properties.Item("FullPath").Value?.ToString();
name = projectItem.Name;
}
if (items != null)
{
string template = ((Solution2)dte.Solution).GetProjectItemTemplate(templateName, "CSharp");
object[] parameters = new object[]{
EnvDTE.Constants.vsWizardAddItem,
name,
items,
fullPath,
defaultName,
"",
false
};
dte.LaunchWizard(template, ref parameters);
}
}
我有带有自定义项模板的 VS 扩展。
这个项目使用它自己的向导,因为我需要一些信息来生成多个 类.
当我使用添加新项目添加此项目时 -> [我的项目] 显示自定义向导(表单)。
现在我想在解决方案资源管理器的上下文菜单中提供所有新项目类型。
我添加了上下文菜单,但我无法让它显示我的向导。
我试过了
dte.ItemOperations.AddNewItem( ... )
dte.LaunchWizard( ... )
ProjectItems.AddFromTemplate( ... )
但是 none 这些作品。
这与
我终于可以为我的自定义项目模板打开向导了。我向 LaunchWizard 方法传递了错误的参数。
Parent 可以从选择中取例如:
var parent= dte.SelectedItems.Item(1);
运行 向导:
internal static async System.Threading.Tasks.Task AddProjectItemFromTemplateAsync(DTE dte, object parent, string templateName, string defaultName)
{
ProjectItems items = null;
string fullPath = null;
string name = null;
if (parent is Project project)
{
items = project.ProjectItems;
fullPath = project.Properties.Item("FullPath").Value?.ToString();
name = project.Name;
}
else if(parent is ProjectItem projectItem)
{
items = projectItem.ProjectItems;
fullPath = projectItem.Properties.Item("FullPath").Value?.ToString();
name = projectItem.Name;
}
if (items != null)
{
string template = ((Solution2)dte.Solution).GetProjectItemTemplate(templateName, "CSharp");
object[] parameters = new object[]{
EnvDTE.Constants.vsWizardAddItem,
name,
items,
fullPath,
defaultName,
"",
false
};
dte.LaunchWizard(template, ref parameters);
}
}