【问题标题】:VSIX Visual studio extension project template CreationVSIX Visual Studio 扩展项目模板创建
【发布时间】:2021-02-06 16:35:41
【问题描述】:

我有一个 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 覆盖中有断点,它会被命中,但不会生成项目。不幸的是,我没有找到任何关于“FlavoredProject”创建的资源/文档。谁能向我解释这里缺少什么/我做错了什么? 还是不推荐使用这种“FlavoredProject”方法?

【问题讨论】:

标签: c# visual-studio visual-studio-2019 visual-studio-extensions vsix


【解决方案1】:

您遇到此错误的原因是您的项目模板缺少一些东西。即一个项目文件(.csproj 或类似文件),以及一个 .vstemplate。

这里要考虑的一件事;是您希望您可能希望使用安装自定义项目风格的相同 .VSIX 部署项目模板。所以你应该考虑创建一个实际的项目模板项目。然后使用项目到项目引用从您的 VSIX 项目中引用该项目,并将其作为资产包含在您的 .vsixmanifest 中。

使用项目模板向导创建初始项目模板,将确保您获得项目文件以及 .vsixmanifest。尽管您需要修改 .csproj 以使用您的项目风格。也就是说,您需要确保将项目风格的 guid 添加到 .csproj 文件中的标记中。否则,该项目仍将只是基于 C# 的库存项目。 :-)

我多年前发布了一个somewhat dated custom project type sample,它实现了自定义项目类型(不是项目风格),但它还包括一个项目和项目模板,类似于您正在尝试做的事情。虽然它是为早期版本的 VS 编写的,但可能仍然可以作为一个可行的示例 /wrt 实现项目模板以配合您的自定义项目风格。

也值得一读:

此致,

【讨论】:

  • 您可能希望在发布答案之前对其进行测试。操作中止(HRESULT 异常:0x80004004 (E_ABORT))
  • 为了记录,我会在发布之前测试我的答案。我实际上查看了有问题的代码,并指出了一些需要修复的地方。原始发帖人当然发现这个回应很有用。我猜您的问题与原始海报代码库无关,因此也许您可以发布自己的 SO 查询,并提供一些有关如何重现您的问题的详细信息以供进一步评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多