我创建了一个ItemTemplate项目。我想将此安装到自定义文件夹。当我手动将从项目构建的zip文件添加到ItemTemplates中的命名文件夹时,此方法可以正常工作。
我现在使用两个项目,原始的ItemTemplate项目和一个VSIX项目进行安装。
我面临的问题是,在使用VSIX项目安装模板时,安装路径会在自定义文件夹中添加一个名为CSharp的额外文件夹。仅当我将ItemTemplate项目作为项目添加到VSIX项目时,才会发生这种情况。如果将ItemTemplates项目的压缩文件zip文件添加到VSIX项目,则模板位于正确的位置。
使用vsixmanifest中的Assets部分,已将ItemTemplate项目添加为VSIX项目中的参考项目。下图中的属性是VSIX项目的“引用”部分中ItemTemplate项目的属性。
如果有帮助,这是我在ItemTemplate项目中使用的vstemplate文件。
<?xml version="1.0" encoding="utf-8"?>
<VSTemplate Version="3.0.0" Type="Item" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" xmlns:sdk="http://schemas.microsoft.com/developer/vstemplate-sdkextension/2010">
<TemplateData>
<Name>Generator</Name>
<Description></Description>
<Icon>Magic.Generator.ico</Icon>
<TemplateID>Magic.Generator</TemplateID>
<TemplateGroupID>Magic</TemplateGroupID>
<ProjectType>CSharp</ProjectType>
<RequiredFrameworkVersion>2.0</RequiredFrameworkVersion>
<NumberOfParentCategoriesToRollUp>2</NumberOfParentCategoriesToRollUp>
<DefaultName>Generator.cs</DefaultName>
</TemplateData>
<TemplateContent>
<ProjectItem ReplaceParameters="false">Generator.cs</ProjectItem>
</TemplateContent>
</VSTemplate>
我正在使用VS2017(15.7.4) 感谢您的帮助。
答案 0 :(得分:1)
我知道了。希望这对其他人有用。
Simon Mourier的评论(感谢Simon)使我以不同的方式思考问题。
我一直在想VSIX项目包含有关在何处安装ItemTemplate的所有信息,但是事实并非如此,实际上是ItemTemplate项目本身包含此信息。
由此我发现,如果您查看ItemTemplate项目中vstemplate文件的属性,则会发现需要设置的Category字段。