如何通过Visual Studio中的加载项添加jscript或html项模板

时间:2010-10-08 09:27:32

标签: c# visual-studio-2010 templates .net-4.0 vs-extensibility

我目前正在使用加载项,并且需要以编程方式将自定义项模板添加到项目中。

我目前正在.. \ 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 Develerop \ JScript(HTML)”中,但没有运气。

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

2 个答案:

答案 0 :(得分:1)

从进一步研究看来,string Solution2.GetProjectItemTemplate(string TemplateName, string Language)中的参数语言实际上是项目模板所针对的项目的语言类型。因此,模板中的实际项目是java文件还是html文件,项目仍然是CSharp或VisualBasic,因此应该作为Language参数传入。

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

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

答案 1 :(得分:0)

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