将一个项目的exe文件复制到另一个项目的调试输出目录

11

我有两个项目,ProjOne.exe和ProjTwo.exe。 我想构建ProjOne.exe并使其知道它依赖于ProjTwo.exe,以便在构建ProjOne.exe时将复制ProjTwo.exe。

我已经有一个ProjThree.dll可以完美地做到这一点。 但这只是因为dll被ProjOne引用。

是否有类似DLL / OCX的方法来实现此操作?还是需要进行后期构建脚本? :) 如果需要,请给出我要使用的脚本示例。

谢谢!


你能不能通过将两个项目包含在解决方案中,然后适当设置解决方案的输出路径属性来实现这个目标? - Jarrett Robertson
它们在同一个解决方案中。我从来没有考虑过直接将输出路径设置为ProjOne调试目录。我觉得这样做可能会有点问题... ProjTwo也被不同解决方案中的几个项目使用。:/ 虽然这是一个快速而简单的解决方案,但它不能满足我的需求。 - Arvo Bowen
2个回答

17

前往 项目 ProjTwo 属性 -> 生成事件 --> 后生成事件命令行

echo f | xcopy /y "$(TargetPath)" "$(SolutionDir)ProjOne\bin\Debug$(TargetFileName)"

当你构建ProjTwo时,它会将ProjTwo.exe复制到ProjOne的Debug文件夹中


我想这就是我必须要做的事情,而且没有内置的东西可以自动完成这个任务。谢谢! - Arvo Bowen
@ArvoBowen 感谢您的编辑,由于我使用的是西班牙语版的VS,所以我尽力将其翻译成英语。 - ganchito55
np,我也认为我应该补充一下,在大多数情况下不需要使用 xcopy。由于 xcopy 缺乏所需的开关(如针对文件而非目录的 /I),因此人们可能会选择使用 copy 命令,像这样... copy /Y "$(TargetPath)" "$(SolutionDir)ProjOne\bin\Debug$(TargetFileName)" - Arvo Bowen

10

最终我采用了ganchito55的方法,它运行良好。但后来我意识到这种方法在处理多个文件(如调试文件等)时不适合我的需求。我还想考虑在构建中加入 DEBUGRELEASE

最终我执行了以下操作...

1) 进入ProjTwo的项目属性:

右击项目 -> 属性 -> 生成事件

2) 将以下行添加到“后期生成事件命令行”框中:

在构建DEBUG 输出时,将ProjTwo使用的所有文件复制到ProjOne输出目录中。

if $(ConfigurationName) == Debug xcopy /y "$(TargetDir)*.*" "$(SolutionDir)ProjOne\bin\Debug\"

在生成RELEASE输出时,将ProjTwo中使用的所有文件复制到ProjOne输出目录中。

if $(ConfigurationName) == Release xcopy /y "$(TargetDir)*.*" "$(SolutionDir)ProjOne\bin\Release\"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接