在Visual Studio 2012中使用多个非嵌套文件创建项模板

时间:2013-05-17 21:40:24

标签: c# templates visual-studio-2012

我正在寻找创建一个新的Visual Studio 2012项目模板,该模板生成五个文件,其中三个是嵌套的,另一个不是。它应该是这样的:

MyView1.View
   MyView1.view.cs
   MyView1.data.cs
   MyView1.gen.cs

MyView1.js

(我需要将JavaScript文件分开的原因是由于将其用作嵌入式资源以在运行时动态提取以进行解析的问题。)

这是我到目前为止提出的模板文件:

<VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
    <DefaultName>MyView.view</DefaultName>
    <Name>MVC Desktop View - Integration Test</Name>
    <Description>A view in a MVC-based desktop web application for use in integration tests.</Description>
    <ProjectType>CSharp</ProjectType>
    <SortOrder>10</SortOrder>
    <Icon>__TemplateIcon.ico</Icon>
    <NumberOfParentCategoriesToRollUp>1</NumberOfParentCategoriesToRollUp>
</TemplateData>
<TemplateContent>
    <ProjectItem TargetFileName="$fileinputname$.view" ReplaceParameters="true">Template.view</ProjectItem>
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.view.cs" ReplaceParameters="true">Template.view.cs</ProjectItem>
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.data.cs" ReplaceParameters="true">Template.data.cs</ProjectItem>
    <ProjectItem SubType="Code" TargetFileName="$fileinputname$.gen.cs" ReplaceParameters="true">Template.gen.cs</ProjectItem>
    <ProjectItem TargetFileName="$fileinputname$.js" ReplaceParameters="true" ItemType="Embedded Resource">Template.js</ProjectItem>
</TemplateContent>
<WizardExtension>
    <Assembly>VisualStudio.TemplateWizards, Version=1.1.0.0, Culture=neutral, PublicKeyToken=87390d63f27c23a4</Assembly>
    <FullClassName>VisualStudio.TemplateWizards.ViewItemTemplateWizard</FullClassName>
</WizardExtension>

问题是JavaScript文件嵌套在.View文件下面,我似乎无法找到解决方法。理想情况下,我希望这是一个添加的单个项目模板(而不必使用两个单独的项目模板)。

非常感谢任何帮助。我还有其他一切工作,只需要打磨最后一小块。

1 个答案:

答案 0 :(得分:1)

我终于解决了这个问题。事实证明,当将ItemType作为属性添加到文件时,您不能使用项目类型的名称,如下拉列表中所示(根据此帖子:http://social.msdn.microsoft.com/Forums/en-US/vsx/thread/3f6788cd-634b-42e5-ba63-b6dc52af71f9)。将行更改为此(嵌入和资源之间没有空格)可以解决问题:

<ProjectItem TargetFileName="$fileinputname$.js" ReplaceParameters="true" ItemType="EmbeddedResource">Template.js</ProjectItem>