我创建了一个自定义语言包,它扩展了ProjectPackage。我可以正确地创建新项目。我希望能够使用Add-> New Item ...(Ctrl + Shift + A)菜单项将新的源文件添加到项目中。但是,当我单击此时,可用模板列表为空。我想将自己的自定义模板添加到此项目类型的可用模板菜单中。是否有一些文件来完成这个?我见过的唯一提到的就是注册表黑客攻击,但我必须想办法以编程方式进行操作。
我是否可以覆盖特定方法来填充列表?我是否真的需要制作模板,或者我可以只显示“模板名称”,“图标”并提供正确的文件扩展名(文件在创建时应该为空,所以我认为模板很大程度上浪费在我想要的东西上做)。
这是我到目前为止走过的路。我想我可以在我的自定义.vproj文件中设置我的项目类型和GUID(.vproj是我的自定义项目注册的文件扩展名)。我以为我可以使用与我的.vproj文件相同的ProjectType快速创建项目模板。
<VSTemplate Version="3.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Item">
<TemplateData>
<Icon>VerilogSource.ico</Icon>
<DefaultName>module.v</DefaultName>
<Name>Basic Verilog Module</Name>
<Description>
A basic Verilog module for quickly adding new files to the project.
</Description>
<ProjectType>VerilogProject</ProjectType>
</TemplateData>
<TemplateContent>
<ProjectItem TargetFileName="$fileinputname$.v"
ReplaceParameters="true">module.v</ProjectItem>
</TemplateContent>
</VSTemplate>
唉,这个模板根本没有显示,即使我已将它包含在VSIX中并将其复制到输出目录中。如果我将此模板放在与我的.vproj相同的文件夹中,它将显示为用于创建新项目的模板(错误!),但仍然不会出现在我的新项目列表中。这可能都源于我不使用VSTemplate来创建我的项目。相反,我使用[ProvideProjectFactoryAttribute]让VS2010知道我的vproj文件在哪里,并且它将使用vproj文件(我猜你可以调用模板,但它不是VSTemplate,它是一个项目)来建立新的投射出来。
这是我到目前为止的地方,我正在继续尝试新事物。我希望有人可能有我想要的答案。谢谢,
Giawa
答案 0 :(得分:4)
经过大量的阅读和工作,这是我的答案:
为项目和项目使用vstemplate文件,并将它们编译为vstemplate(不要复制到输出,不要包含VSIX,与Microsoft Walkthrough建议的相反)。编译器会将每个项目和项目模板打包到自己的zip文件中。现在,您需要告诉vsixmanifest这些文件的位置。项目和项目的默认目录分别是ProjectTemplates和ItemTemplates。像这样将它们添加到你的vsixmanifest:
<Content>
<VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage>
<ProjectTemplate>ProjectTemplates</ProjectTemplate>
<ItemTemplate>ItemTemplates</ItemTemplate>
</Content>
现在,您还必须在内置vsix软件包的.csproj文件中添加一些属性。这些属性可能通过一些复杂的方法添加,但最简单的方法是将它们直接放在.csproj文件中。
<PropertyGroup>
<GetVsixSourceItemsDependsOn>$(GetVsixSourceItemsDependsOn);GetVsixTemplateItems</GetVsixSourceItemsDependsOn>
</PropertyGroup>
<Target Name="GetVsixTemplateItems" DependsOnTargets="ZipProjects;ZipItems">
<ItemGroup>
<VSIXSourceItem Include="@(IntermediateZipItem)">
<VSIXSubPath>ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)</VSIXSubPath>
</VSIXSourceItem>
<VSIXSourceItem Include="@(IntermediateZipProject)">
<VSIXSubPath>ProjectTemplates\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)</VSIXSubPath>
</VSIXSourceItem>
</ItemGroup>
</Target>
现在,这将把您的zip文件包含到您的项目中,如果运气好的话,您现在可以将项目和项目正确链接在一起。
幸运的是,项目/项目模板有相当多的文档。我花了一段时间才意识到这是正确的方法。祝你好运,
Giawa
答案 1 :(得分:0)
所有这些步骤都可以在 Visual Studio 中自动完成:
首先在单独的项目中创建项目模板(您可以通过File > Export template
完成)。您可以通过编辑.vstemplate
文件来自定义此模板。
获得.zip
文件后,将其拖放到主VSPackage
解决方案中,然后执行以下操作:
.vsixmanifest
文件。Assets > New
。Type
设为Microsoft.VisualStudio.ItemTemplate
(项目模板)。Source
设置为File on filesystem
。Path
设置为项目模板.zip
文件。注意:我使用的是 Visual Studio 2013 。