gpt4 book ai didi

c# - VS2010 强积金 : Populating 'Add->New Item...' list for a custom project

转载 作者:太空狗 更新时间:2023-10-29 21:46:49 28 4
gpt4 key购买 nike

我创建了一个自定义语言包,它扩展了 ProjectPackage。我可以正确地创建新项目。我希望能够使用 Add->New Item... (Ctrl+Shift+A) 菜单项向项目添加新的源文件。但是,当我现在单击它时,可用模板列表是空的。我想将自己的自定义模板添加到此项目类型的可用模板菜单中。是否有一些文档可以完成此操作?我所看到的唯一提到的是注册表黑客攻击,但我认为必须有一种方法可以以编程方式进行。

有没有我可以覆盖的特定方法来填充列表?我真的需要制作模板吗,或者我可以只显示“模板名称”、“图标”并提供正确的文件扩展名(文件在创建时应该是空的,所以我认为模板在很大程度上浪费在了我想要的东西上做)。

这是我迄今为止走过的路。我想我可以在我的自定义 .vproj 文件中设置我的项目类型和 GUID(.vproj 是我的自定义项目在其下注册的文件扩展名)。我想我可以快速创建一个项目模板,其项目类型与我的 .vproj 文件相同。

<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,它是一个项目)作为新的基础项目关闭。

这是我目前所处的位置,我正在继续尝试新事物。我希望有人能得到我正在寻找的答案。谢谢,

吉瓦

最佳答案

经过大量阅读和工作,这是我的答案:

为您的项目和项目使用 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 文件包含到您的项目中,幸运的话,您现在将拥有正确链接在一起的项目和项。

幸运的是,有相当多的项目/项目模板文档。我只是花了一段时间才意识到这是正确的方法。祝你好运,

吉瓦

关于c# - VS2010 强积金 : Populating 'Add->New Item...' list for a custom project,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6837138/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com