1

我目前正在开发一个加载项,并且需要以编程方式将自定义项模板添加到项目的功能。

我目前正在..\Visual Studio 2010\Templates\ItemTemplates\ 中安装模板(为.zip 格式)。

然后从加载项中调用以下代码:

string templateLocation = (solution as Solution2).GetProjectItemTemplate(templateName, language);
projectToAddTo.ProjectItems.AddFromTemplate(templateLocation, nameOfNewItem);

如果项目模板用于 C# 文件,那么如果我使用“CSharp”作为语言变量并将模板放在语言文件夹“Visual C#”或“Visual Web Developer\Visual C#”中,那么一切正常;模板在 Visual Studio 中被正确发现和实现。
但是,如果我创建 JScript 或 HTML 模板,如果我将语言提供为“JScript”或“HTML”,则 GetProjectItemTemplate 方法会引发异常。我尝试将模板放在“ItemTemplates\JScript(HTML)”和“ItemTemplates\Visual Web Developer\JScript(HTML)”中,但没有成功。

任何人对我做错了什么有任何想法,这些自定义项目模板支持哪些语言,语言参数和文件夹位置应该是什么?

4

2 回答 2

1

仔细研究后,似乎参数 Language instring Solution2.GetProjectItemTemplate(string TemplateName, string Language)实际上是项目模板所针对的项目的语言类型。因此,无论模板中的实际项目是 java 文件还是 html 文件,项目仍然是 CSharp 或 VisualBasic,因此应该作为 Language 参数传入。

此外,在自定义项和项目模板的位置,文件夹的名称无关紧要,无论是 Visual C#、Visual Basic、Visual Web Developer\JScript。文件夹的名称只会影响它在“添加新项目”对话框中的显示方式以及它在缓存中的存储方式。

此外,您在调用 GetProjectItemTemplates 时指定的 TemplateName 参数应具有 ItemTemplates 文件夹下的完整相对路径。尽管没有它也可以工作,但如果您在不同位置有多个同名模板,那么您将获得 VS 返回的第一个模板。

于 2010-10-08T12:40:28.230 回答
0

我的建议是采用 HTML 或 JS 并使用 VS 自己的菜单将其导出为模板。然后,解压缩模板并在文件中查找language参数。.vstemplate

于 2010-10-08T13:19:06.223 回答