我有一个正在尝试调试的 C++ 程序。我通常从一个 .bat 文件运行它,该文件在运行程序之前会进行一些文件清理。我可以从这个脚本运行我的程序并附加调试器,但从 VS 启动 .bat 文件会更方便。如果我将启动项目的 Command 属性设置为 bat 文件,我会收到一个错误,指出它是无法识别的二进制格式(因为它不是二进制格式,我想)。我可以将命令设置为 cmd.exe 并打开一个命令 shell,但我还没有弄清楚如何将 .bat 文件传递给命令 shell。我已经尝试将它包含在属性命令行中,有和没有重定向字符(<),并尝试将它作为参数传递给命令,但这些都不起作用。我已经足够接近了,我认为一定有办法做到这一点,但我
问问题
3530 次
2 回答
1
有些视觉工作室有这个选项,有些则没有。我会发布两个案例
如果你的 VS 有这个选项
- 右键单击“项目”,然后转到属性-> 调试
- 在“启动动作”中选择“启动外部程序”,然后把
c:\Windows\System32\cmd.exe
- 在启动选项中,放置命令行参数:
/c your_bat.bat
- 必要时设置工作目录
- 在“启动动作”中选择“启动外部程序”,然后把
保存并快乐调试
如果你的 VS 没有这个选项
当您执行上述操作时,将your_project.csproj.user
在与 相同的目录中创建/更新一个文件your_project.csproj
,其中包含以下内容:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ProjectView>ShowAllFiles</ProjectView>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
<StartProgram>C:\Windows\System32\cmd.exe</StartProgram>
<StartWorkingDirectory>c:\your_working_directory\</StartWorkingDirectory>
<StartArguments>/c your_bat.bat</StartArguments>
</PropertyGroup>
</Project>
创建或更新此文件,包括上述内容。小心不要移除其他东西(如果有的话)。您还可以通过复制项目可能具有的PropertyGroup
不同配置和其他配置来将其扩展到其他配置。'Release|AnyCPU'
(这在某些版本的 VS via interface 中是可能的)
警告:您需要在 Visual Studio 中重新加载项目才能使此更改生效。(右键单击项目,卸载 - 然后再次加载)
于 2020-10-09T17:25:14.627 回答
0
我建议不要调用最后启动应用程序的批处理文件,而是在“构建事件”项目设置中添加构建后事件。在构建后事件中键入您的清理代码,但省略“程序启动”行。让 VS 运行你的程序。这样你就不需要附加到程序
于 2013-04-18T01:46:01.833 回答