在解决方案中为 C++ 项目创建 VSIX 扩展

Creating VSIX extension for a C++ project in a solution

目前我的 C++ 项目和 C# VSIX 扩展有 2 个单独的解决方案。我将 C++ 项目模板导出为 .zip 存档,并在 VSIX 扩展解决方案中将其添加为文件资产。工作正常,但我需要一直手动处理 .zip。 为了避免这种情况,我尝试将项目 (C++ + VSIX) 合并到一个解决方案中,而不是添加文件资产,我尝试添加项目资产,选择我的 C++ 项目。 问题是这不起作用,VSIX 项目在尝试编译时出错:"error MSB4057: no target "TemplateProjectOutputGroup"。"而且我还没有找到任何描述必须如何完成的内容。

VS2019 社区。

您实际上只需要一个包含多个项目的解决方案。

我过去这样做的方法是首先创建一个空的 .VSIX 项目(用于部署模板)。

然后添加新的 "C# Project Template" 项目,并修改它们以创建 C++ 项目而不是 C# 项目。请注意,核心 .csproj 文件仍然生成模板项目 C# 项目,但添加了模板有效负载(.vcxproj、.h、.cpp 等,并删除了 C# 文件。因此最终结果是模板生成了一个 C++项目而不是 C# 项目。

这些项目模板项目将生成 .zip 文件,然后可以将其添加到您的 .VSIX 项目中,方法是首先引用项目模板项目(也称为项目到项目引用),然后编辑 vsixmanifest 以包含引用项目(zip 文件)的输出作为资产。

几年前我写了一篇关于这个的博客文章,就是这样做的。虽然重点是用于设置 Windows SDK 版本的自定义向导,但对于使用模板创建的生成的 C++ 项目。代码文章还有一个 link 到源代码,您可能会发现它对其他指导很有用。

Creating a VSIX Deployable C++ project template

此致,