Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调试时如何查找可执行文件?_C#_Visual Studio_Visual Studio 2012 - Fatal编程技术网

C# 调试时如何查找可执行文件?

C# 调试时如何查找可执行文件?,c#,visual-studio,visual-studio-2012,C#,Visual Studio,Visual Studio 2012,我有一个VisualStudio解决方案,其中包含许多C#应用程序项目 Solution/ A/ B/ C/ Installer (WiX)/ 解决方案/ A/ B/ C/ 安装程序(WiX)/ 其中一些可执行文件需要能够运行其他文件。例如,A需要能够运行B和C。一旦安装了整个软件包,这很容易,因为可执行文件将全部安装到相同的位置。但是,当我从Visual Studio内部运行程序时,即在测试和调试时,我不确定如何从A.exe中找到B.exe 无论我是从Visua

我有一个VisualStudio解决方案,其中包含许多C#应用程序项目

Solution/ A/ B/ C/ Installer (WiX)/ 解决方案/ A/ B/ C/ 安装程序(WiX)/ 其中一些可执行文件需要能够运行其他文件。例如,A需要能够运行B和C。一旦安装了整个软件包,这很容易,因为可执行文件将全部安装到相同的位置。但是,当我从Visual Studio内部运行程序时,即在测试和调试时,我不确定如何从
A.exe
中找到
B.exe

无论我是从VisualStudio运行还是在完全安装程序之后,如何获得正确的路径?我有一些想法,但我对执行有点失望,我希望它比现在看起来更容易。如果需要手动编辑
*.csproj
文件,我会感到很舒服

可能的解决办法1 我可以将路径放在
App.config
文件中。但是,也存在一些问题:

  • 调试版本和发布版本的文件需要不同。这看起来并不容易。推荐XSLT,它的复杂性有点病态,我特别不想为了解决这样一个简单的问题而学习另一种语言
  • 我需要在安装程序中包含该文件之前对其进行编辑,这是可能的(),但需要更多的代码
可能的解决办法2 我可以将必要的路径放在使用构建后步骤创建的纯文本文件中,但我不知道足够多的批处理脚本来适应这种情况

可能的解决办法3 以某种方式将
B.exe
复制到A的输出目录中,因此
B.exe
始终位于相对于
A.exe
的相同路径中。这将是令人恼火的,因为已经存在复制
B.exe
的大量依赖项的后期构建步骤,并且在a的构建过程中需要再次复制文件

可能的解决办法4 以某种方式调整构建过程,使解决方案中的所有项目之间只共享一个输出目录

非解决方案
我希望保留该解决方案,以便在从版本控制中签出存储库的新副本后,它可以工作,这意味着环境变量或命令行参数将无法工作。

我将使用选项4。将每个项目配置为生成到同一文件夹很容易。选项4是最合理的解决方案5:将它们作为引用添加,以便VS将它们复制到正在运行的项目中。@leppie:据我所知,如果我将B作为引用添加到a中,B也将链接到a中。如何避免这种情况?@DietrichEpp:“链接到”是什么意思?您实际上没有在代码中引用它,因此程序集中不存在引用。唯一的副作用是项目(exe和config以及引用)被复制,这似乎正是您想要的。