我有一个VSIX Visual Studio 2019扩展程序,应将项目模板添加到Visual Studio。为此,我使用了FlavouredProjectBase和FlavouredProjectFactory。类看起来像这样:
项目类:
class LugiaUIProject : FlavoredProjectBase
{
public LugiaUIProject(IServiceProvider site)
{
}
}
工厂类:
[Guid(LugiaUIProjectPackage.LugiaUIProjectFactoryString)]
internal class LugiaUIProjectFactory : FlavoredProjectFactory
{
private LugiaUIProjectPackage lugiaUIProjectPackage;
public LugiaUIProjectFactory(LugiaUIProjectPackage pkg)
{
lugiaUIProjectPackage = pkg;
}
protected override object PreCreateForOuter(object outerProject)
{
return new LugiaUIProject();
}
protected override void CreateProject(string fileName, string location, string name, uint flags, ref System.Guid projectGuid, out System.IntPtr project, out int canceled)
{
//??
}
}
项目注册似乎工作正常,因为在创建新项目时模板会显示在模板列表中:
但是我无法创建项目。当我选择模板时,它只会引发错误。如果CreateProject
替代中存在断点,它将被命中,但不会生成项目。不幸的是,我找不到任何有关“ FlavouredProject”创建的资源/文档。谁能向我解释什么缺失/我在做什么错?
还是不推荐使用这种“ FlavouredProject”方法?
答案 0 :(得分:0)
遇到此错误的原因是因为您的项目模板缺少几件事。即是项目文件(.csproj或类似文件)以及.vstemplate。
这里要考虑的一件事;是,您可能希望使用安装自定义项目样式的.VSIX部署项目模板。因此,您应该考虑创建一个实际的项目模板项目。然后,将VSIX项目中的该项目与“项目到项目”引用一起引用,并将其作为资产包含在.vsixmanifest中。
使用项目模板向导创建初始项目模板,将确保您获得项目文件以及.vsixmanifest。尽管您将需要修改.csproj才能使用项目样式。即,您需要确保将项目风味的guid添加到.csproj文件中的标签中。否则,该项目仍将只是基于C#的常规项目。 :-)
几年前,我发布了一个somewhat dated custom project type sample,它实现了自定义项目类型(不是项目风格),但其中还包含一个项目和项目模板,与您要尝试的类似。尽管它是为VS的早期版本编写的,但可能仍可以作为/ wrt实施项目模板以配合自定义项目风格的可行示例。
也值得一读:
此致