2

我有一个正在尝试调试的 C++ 程序。我通常从一个 .bat 文件运行它,该文件在运行程序之前会进行一些文件清理。我可以从这个脚本运行我的程序并附加调试器,但从 VS 启动 .bat 文件会更方便。如果我将启动项目的 Command 属性设置为 bat 文件,我会收到一个错误,指出它是无法识别的二进制格式(因为它不是二进制格式,我想)。我可以将命令设置为 cmd.exe 并打开一个命令 shell,但我还没有弄清楚如何将 .bat 文件传递​​给命令 shell。我已经尝试将它包含在属性命令行中,有和没有重定向字符(<),并尝试将它作为参数传递给命令,但这些都不起作用。我已经足够接近了,我认为一定有办法做到这一点,但我

4

2 回答 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 回答