gpt4 book ai didi

c# - 将 .exe 打包成 .vsix 并从 Visual Studio 扩展中调用

转载 作者:太空狗 更新时间:2023-10-29 20:25:08 24 4
gpt4 key购买 nike

我有一个 Visual Studio 包,它通过启动外部进程(使用 System.Diagnostics.Process)并通过标准输入/输出与其通信来完成一些工作。目前,我有硬编码的 .exe 路径,这显然不适用于实际部署扩展。打包和分发带有扩展名的 .exe 的正确方法是什么? (并且,相关的,一旦我这样做了,我如何以编程方式发现安装的 .exe 文件的路径。)最好我想把它放入 .vsix 文件,因此安装很容易。

编辑: 我已将代码的相关部分放在 BitBucket 上(它可能对使用 Roslyn 的其他人有用):roslyn_process为了更好地了解我要做什么。此代码在使用 AbstractProcessHandler 的实现的 Visual Studio 扩展和使用 RoslynProcess 的单独进程之间建立通信。后者随时了解 Visual Studio 中代码文件的修改以及正在查看哪个代码文件,因此它能够使用最新信息进行分析,尽管它没有作为 Visual Studio 扩展运行,这会施加限制Roslyn 正在编辑所有代码。

编辑 2:使用 this answer ,我可以获得扩展的目录。我可以将另一个包包含在 source.extension.vsixmanifest 中,方法是将其作为“自定义扩展类型”类型添加到内容列表中。然后 .exe 出现在扩展目录中。这似乎是正确的解决方案,尽管获取目录的方式在 MSDN 中被标记为我不应该使用的方式。

这似乎是最好的方法,尽管它看起来很老套,在这种情况下,我会在一切正常后将其作为答案发布。

最佳答案

最简单的方法之一是让您的包 DLL 具有对 EXE 的项目引用,并使您的入口点类(或 EXE 中的某个类)公开。然后你可以写:

typeof(ExternalProcess).Assembly.Location

它为您提供了扩展路径中 EXE 的路径。

关于此的另一个好处是 VSIX 打包程序应该自动将 EXE 包含到 VSIX 中,因为它是一个项目引用。您不必在 EXE 的 .vsixmanifest 中添加任何内容。

关于c# - 将 .exe 打包成 .vsix 并从 Visual Studio 扩展中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9186187/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com