C# VS2010强积金:人口';添加->;新项目…';自定义项目的列表
我创建了一个自定义语言包,它扩展了ProjectPackage。我可以正确创建新项目。我想能够添加新的源文件到项目中使用添加->新项目。。。(Ctrl+Shift+A)菜单项。但是,当我单击此按钮时,可用模板列表为空。我想将我自己的自定义模板添加到此项目类型的可用模板菜单中。是否有实现此目的的文档?我所看到的唯一提到的是注册表黑客,但我认为必须有一种方法以编程方式进行 是否有特定的方法可以替代以填充列表?我真的需要制作一个模板吗,或者我可以只显示“模板名称”、“图标”并提供正确的文件扩展名(创建文件时文件应该是空的,所以我认为模板在很大程度上浪费在我想做的事情上) 这是我到目前为止一直走的路。我想我可以在我的自定义.vproj文件中设置我的项目类型和GUID(.vproj是我的自定义项目注册的文件扩展名)。我想我可以快速创建一个与.vproj文件具有相同项目类型的项目模板C# VS2010强积金:人口';添加->;新项目…';自定义项目的列表,c#,visual-studio,visual-studio-2010,extensibility,mpf,C#,Visual Studio,Visual Studio 2010,Extensibility,Mpf,我创建了一个自定义语言包,它扩展了ProjectPackage。我可以正确创建新项目。我想能够添加新的源文件到项目中使用添加->新项目。。。(Ctrl+Shift+A)菜单项。但是,当我单击此按钮时,可用模板列表为空。我想将我自己的自定义模板添加到此项目类型的可用模板菜单中。是否有实现此目的的文档?我所看到的唯一提到的是注册表黑客,但我认为必须有一种方法以编程方式进行 是否有特定的方法可以替代以填充列表?我真的需要制作一个模板吗,或者我可以只显示“模板名称”、“图标”并提供正确的文件扩展名(创建
<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>
<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>
VerilogSource.ico
第五单元
基本Verilog模块
用于快速向项目添加新文件的基本Verilog模块。
VerilogProject
第五单元
唉,这个模板根本没有显示出来,即使我已经将其包含在VSIX中并将其复制到输出目录中。如果我将此模板与我的.vproj放在同一文件夹中,它将显示为创建新项目的模板(错误!),但仍然不会显示在我的新项目列表中。这可能是因为我不使用VSTemplate来创建项目。相反,我使用[ProvideProjectFactoryAttribute]让VS2010知道我的vproj文件在哪里,它将使用vproj文件(我想你可以称之为模板,但它不是VSTemplate,它是一个项目)作为新项目的基础
这就是我目前所处的位置,我将继续尝试新事物。我希望有人能找到我想要的答案。谢谢
Giawa经过大量阅读和工作,以下是我的答案: 为项目和项目使用vstemplate文件,并将其编译为vstemplate(不要复制到输出,也不要包含在VSIX中,与建议相反)。编译器会将每个项目和项目模板打包到它们自己的zip文件中。现在,您需要告诉vsixmanifest这些文件在哪里。项目和项目的默认目录分别是ProjectTemplates和ItemTemplates。将它们添加到vsixmanifest中,如下所示:
<Content>
<VsPackage>|%CurrentProject%;PkgdefProjectOutputGroup|</VsPackage>
<ProjectTemplate>ProjectTemplates</ProjectTemplate>
<ItemTemplate>ItemTemplates</ItemTemplate>
</Content>
|%当前项目%;PkgdefProjectOutputGroup|
项目模板
项目模板
现在,您还必须向内置vsix包的.csproj文件添加一些属性。这些属性可能可以通过一些复杂的方法添加,但最简单的方法是直接将它们放到.csproj文件中
<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>
<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>
$(GetVsixSourceItemsDependsOn);GetVsixTemplateItems
ItemTemplates\%(IntermediateZipItem.Language)\%(IntermediateZipItem.OutputSubPath)\%(IntermediateZipItem.Culture)
项目模板\%(IntermediateZipProject.Language)\%(IntermediateZipProject.OutputSubPath)\%(IntermediateZipProject.Culture)
这将把您的zip文件包含到您的项目中,如果幸运的话,您现在将拥有正确链接在一起的项目和项目
幸运的是,有很多关于项目/项目模板的文档。我只是花了一段时间才意识到这是正确的道路。祝你好运
Giawa所有这些步骤都可以在Visual Studio中自动完成: 首先在一个单独的项目中创建一个项模板(您可以通过
文件>导出模板
来完成)。您可以通过编辑.vstemplate
文件自定义此模板
获得.zip
文件后,将其拖放到主VSPackage
解决方案中,然后执行以下操作:
.vsixmanifest
文件Assets>New
类型
设置为Microsoft.VisualStudio.ItemTemplate
(项目模板)源
设置为文件系统上的文件
路径设置为项目模板.zip
文件
注意:我使用的是Visual Studio 2013。这对我非常有帮助。缺少的成分是将元素添加到清单中。我找不到需要这样做的参考资料。如果我能给你多投一票,我会的!但愿在找到这个之前我没有浪费这么多时间摸索……我还意识到,在右键单击项目节点后,菜单中没有
delete
或remove
命令。