【问题标题】:VSIX - include other application in packageVSIX - 在包中包含其他应用程序
【发布时间】:2019-05-31 14:23:49
【问题描述】:

我们如何在 VSIX 包中包含单独的 .NET 应用程序?最好在子目录中,这样它就不会干扰 Visual Studio 扩展本身(不同版本)的 DLL。该应用程序在同一个解决方案中可用,但出于同样的原因,我也没有在主项目中添加对它的引用。

目的是将该应用程序作为一个单独的进程运行,由扩展程序启动。然后扩展程序将通过 WCF 连接到该应用程序。

【问题讨论】:

  • 创建您自己的安装程序并随心所欲:)

标签: visual-studio visual-studio-extensions vsix


【解决方案1】:

我很确定您只需要在 .VSIX 中包含 .EXE。 .VSIX 只是一个 .zip 文件,您可以在其中包含其他文件,只需将它们添加到您的项目并将 Include in VSIX 属性设置为 true。

要确认,请尝试将Azure Data Lake and Stream Analytics Tools VSIX 之类的内容下载到磁盘。 (我提到这个是因为我注意到它在我的 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions 目录下安装了许多 .EXE)。

在磁盘上拥有 .VSIX 后,将其重命名为 .zip 文件并解压缩,或使用 Windows 资源管理器查看其内容。请注意,该 .zip 中包含的 extensions.vsixmanifest 文件没有该 .VSIX 安装的任何 .exe 文件的引用或条目。这意味着,您真正需要做的就是将其包含在 .zip 文件中。

将一个子文件夹添加到您的 .VSIX 项目中,将 .exe 复制到那里,将其添加到您的项目中,将 Include In VISX 属性设置为 true,我想您将完成所有设置。

此致,

【讨论】:

  • 它不仅仅是exe。文件的数量也或多或少是动态的。这种方法是否还包括调试或发布文件,具体取决于所选配置?
  • 不,它只是包含您添加的特定文件。如果您需要更动态的内容,请将其他项目添加到您的解决方案中,然后使用项目到项目引用将引用项目的输出包含在 .VSIX 中。但这可能会导致 .VSIX 中包含大量额外/不需要的程序集。