【发布时间】:2012-02-08 00:26:06
【问题描述】:
我有一个 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 中被标记为我不应该使用的东西。
看起来这可能是最好的方法,即使它看起来很老套,在这种情况下,一旦我一切正常,我会发布这个作为答案。
【问题讨论】:
-
@Kiquenet:抱歉,我没有一个简洁的最小解决方案......但公认的答案是单行的。
标签: c# subprocess vsix visual-studio-extensions roslyn