【问题标题】:Visual Studio - launch .bat file as startup projectVisual Studio - 启动 .bat 文件作为启动项目
【发布时间】:2013-04-10 22:39:01
【问题描述】:

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

【问题讨论】:

  • 我可以这样做,但我更愿意自动化该步骤以简化调试周期。此外,还有脚本更复杂的情况。同样,我可以只运行程序调用之前的脚本部分,但这意味着从 VS 切换,运行脚本,然后切换回来。不是世界末日(这就是我现在正在做的事情),但我希望有一个很好的集成解决方案。

标签: visual-studio-2010 debugging


【解决方案1】:

我建议不要调用最后启动应用程序的批处理文件,而是在“构建事件”项目设置中添加构建后事件。在构建后事件中键入您的清理代码,但省略“程序启动”行。让 VS 运行你的程序。这样你就不需要附加到程序中了

【讨论】:

  • 使用构建后事件的问题是您需要在每次运行时进行构建。如果我只是在运行调试周期、设置不同的断点、思考结果等,那么我不一定需要在运行之间进行构建。
  • 好点。您是否尝试过“自定义构建步骤”?您可以在那里指定命令并选择何时执行它。如果你选择“Execute Before”运行,那么我猜即使没有构建完成它也会执行它
  • 我尝试了一个自定义构建步骤,使用运行前执行,并将 .bat 文件(完全指定的路径)列为命令行,但它似乎没有运行。我在自定义构建步骤中没有收到任何错误,但是没有出现运行 .bat 文件的效果,所以我假设它没有运行。我也试过在准备运行之前执行,同样的事情。也试过“call foo.bat”,同样的事情。尝试了cmd.exe,同样的事情。即使我可以让它运行,仍然存在问题。该项目是由 cmake 构建的大型解决方案的一部分。 Cmake 清除了自定义构建。
【解决方案2】:

有些视觉工作室有这个选项,有些则没有。我会发布两个案例

如果你的VS有这个选项

  • 右键单击“项目”,然后转到属性 -> 调试
    • 在“启动操作”中选择“启动外部程序”,并输入c:\Windows\System32\cmd.exe
    • 在启动选项中,输入命令行参数:/c your_bat.bat
    • 必要时设置工作目录

保存并愉快地调试

如果你的VS没有这个选项

当您执行上述操作时,将在与 your_project.csproj 相同的目录中创建/更新一个 your_project.csproj.user 文件,其中包含以下内容:

<?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>

创建或更新此文件,包括上述内容。小心不要移除其他东西(如果有的话)。您还可以通过使用不同的配置(例如 'Release|AnyCPU')和您的项目可能具有的其他配置复制 PropertyGroup 来将其扩展到其他配置。 (在某些版本的VS中可以通过接口实现)

警告:您需要在 Visual Studio 中重新加载项目才能使此更改生效。 (右键单击项目,卸载 - 然后再次加载)

【讨论】:

    猜你喜欢
    • 2022-06-13
    • 2013-09-22
    • 1970-01-01
    • 2022-07-22
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    相关资源
    最近更新 更多