VS 2017 - VSIX for Project Templates - Templates not available after VSIX installation

  • Thread starter Thread starter JMI3
  • Start date Start date
J

JMI3

Guest
Hi,

I am missing something and I can not find what.
After ending a customized Project Template for VS 2017 (.Net Core), I wanted to package it as a VSIX Extension. However, no way to make it work.

Context:

  • no installation error
  • no error on logs
  • installation folder does not contain all the template files after installation (wondering if it is normal but it does not look like)
  • the extension is visible from Tools->Extensions and Updates menu
  • the template is no available at File->New Project (I have been looking for it in all the items/subitems under the New Project menu)
  • when I deploy the template to Documents\Visual Studio 2017\Templates\ProjectTemplates\Visual C#\.NET Core, it is visible from New Project and it works properly (I have tried deploying it as a zip file or regular files....both work)

The template is a multi-project template.

I have followed MSDN documentation (by the way, not really clear and precise for something else than very simple examples).

This is a the vsix strcuture:

  • ProjectTemplates [folder]
  • CSharp [folder]
  • .NET Core
  • [Template items according to the screenshot below]
  • templateManifest0.noloc.vstman
  • [Content_Types].xml
  • catalog.json
  • extension.visxmanifest
  • manifest.json


Template structure:

1310743.png

Extenions.vsixmanifest:

<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011">
<Metadata>
<Identity Id="ecc28489-2767-4e93-acf5-9d3c825a1e44" Version="1.0" Language="en-US" Publisher="Jon Mikel Inza" />
<DisplayName>DotNetCoreVSAPITemplate</DisplayName>
<Description xml:space="preserve">Visual Studio 2017 project template accelerating the creation of .Net Core 2.1.x API projects</Description>
<Tags>Visual Studio;Project Template;DotNetCore;API;REST</Tags>
</Metadata>
<Installation>
<InstallationTarget Id="Microsoft.VisualStudio.Community" Version="[15.0, 16.0)" />
<InstallationTarget Version="[15.0,16.0)" Id="Microsoft.VisualStudio.Pro" />
<InstallationTarget Version="[15.0,16.0)" Id="Microsoft.VisualStudio.Enterprise" />
</Installation>
<Dependencies>
<Dependency Id="Microsoft.Framework.NDP" DisplayName="Microsoft .NET Framework" Version="[4.5,)" />
</Dependencies>
<Assets>
<Asset Type="Microsoft.VisualStudio.ProjectTemplate" Path="ProjectTemplates" TargetVersion="[15.0,16.0)" />
</Assets>
<Prerequisites>
<Prerequisite Id="Microsoft.VisualStudio.Component.CoreEditor" Version="[15.0,16.0)" DisplayName="Visual Studio core editor" />
<Prerequisite Id="Microsoft.VisualStudio.Component.NuGet" Version="[15.0,16.0)" DisplayName="NuGet package manager" />
<Prerequisite Id="Microsoft.VisualStudio.Component.Roslyn.LanguageServices" Version="[15.0,16.0)" DisplayName="C# and Visual Basic" />
</Prerequisites>
</PackageManifest>


TemplateManifest0.noloc.vstman

<VSTemplateManifest Version="1.0" xmlns="http://schemas.microsoft.com/developer/vstemplatemanifest/2015">
<VSTemplateContainer TemplateType="Project">
<RelativePathOnDisk>CSharp\.NET Core\DotNetCore.API.Common</RelativePathOnDisk>
<TemplateFileName>Common.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>DotNetCore.API.Common</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>DotNetCore.API.Common</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
<VSTemplateContainer TemplateType="Project">
<RelativePathOnDisk>CSharp\.NET Core\DotNetCore.API.DataContracts</RelativePathOnDisk>
<TemplateFileName>DataContracts.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>DotNetCore.API.DataContracts</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>DotNetCore.API.DataContracts</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
<VSTemplateContainer TemplateType="Project">
<RelativePathOnDisk>CSharp\.NET Core\DotNetCore.API</RelativePathOnDisk>
<TemplateFileName>API.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>DotNetCore.API</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>DotNetCore.API</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
<VSTemplateContainer TemplateType="Project">
<RelativePathOnDisk>CSharp\.NET Core\DotNetCore.IoC.Configuration</RelativePathOnDisk>
<TemplateFileName>Configuration.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>DotNetCore.IoC.Configuration</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>DotNetCore.IoC.Configuration</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
<VSTemplateContainer TemplateType="Project">
<RelativePathOnDisk>CSharp\.NET Core\DotNetCore.Services</RelativePathOnDisk>
<TemplateFileName>Services.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>DotNetCore.Services</Name>
<Description>&lt;No description available&gt;</Description>
<ProjectType>CSharp</ProjectType>
<ProjectSubType>
</ProjectSubType>
<SortOrder>1000</SortOrder>
<CreateNewFolder>true</CreateNewFolder>
<DefaultName>DotNetCore.Services</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<CreateInPlace>true</CreateInPlace>
<Icon>__TemplateIcon.ico</Icon>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
<VSTemplateContainer TemplateType="ProjectGroup">
<RelativePathOnDisk>CSharp\.NET Core</RelativePathOnDisk>
<TemplateFileName>Root.vstemplate</TemplateFileName>
<VSTemplateHeader>
<TemplateData xmlns="http://schemas.microsoft.com/developer/vstemplate/2005">
<Name>.NET Core API Solution template (Simple version)</Name>
<Description>VS template allowing to create REST APIs running on .NET Core 2.1.x (including DI, mappings, OpenAPI/Swagger, error handling).</Description>
<Icon>img.png</Icon>
<ProjectType>CSharp</ProjectType>
<DefaultName>CoreAPI</DefaultName>
<ProvideDefaultName>true</ProvideDefaultName>
<ShowByDefault>true</ShowByDefault>
<SortOrder>10</SortOrder>
<TemplateID>05b79cc9-2146-4716-a8e5-7e085cdd2215</TemplateID>
<LocationField>Enabled</LocationField>
<EnableLocationBrowseButton>true</EnableLocationBrowseButton>
<FrameworkVersion>netcoreapp2.1</FrameworkVersion>
<BuildOnLoad>true</BuildOnLoad>
<CreateInPlace>true</CreateInPlace>
</TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
</VSTemplateManifest> </TemplateData>
</VSTemplateHeader>
</VSTemplateContainer>
</VSTemplateManifest>


What am I missing?

What is wrong?

VSIX file is here:

Debug


Any help will be appreciated.


Bests,


Jon

Continue reading...
 
Back
Top