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

Visual studio 2010 Visual Studio-启动.bat文件作为启动项目 我有一个C++程序,我正在调试。我通常从一个.bat文件运行这个程序,这个文件在运行程序之前会进行一些文件清理。我可以从这个脚本运行我的程序并附加调试器,但是从VS启动.bat文件会更方便。如果我将启动项目的Command属性设置为bat文件,我会得到一个错误,即它是无法识别的二进制格式(因为我想它不是二进制格式)。我可以将命令设置为cmd.exe并打开一个命令shell,但我还不知道如何将.bat文件传递给命令shell。我已经尝试将其包含在属性命令行中,有重定向字符和没有重定向字符(,visual-studio-2010,debugging,Visual Studio 2010,Debugging,我建议您在“生成事件”项目设置中添加生成后事件,而不是调用启动应用程序的最后一个批处理文件。在生成后事件中键入清理代码,但忽略“程序启动”行。让VS运行您的程序。这样您就不需要附加到程序了有些visual Studio有此选项,有些没有。我将发布这两种情况 如果你的VS有这个选项 右键单击“项目”,然后转到属性->调试 在“启动操作”中选择“启动外部程序”,并将c:\Windows\System32\cmd.exe 在开始选项中,输入命令行参数:/c your_bat.bat 如有必要,设置

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

有些visual Studio有此选项,有些没有。我将发布这两种情况

如果你的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>

显示所有文件
C:\Windows\System32\cmd.exe
c:\your\u working\u目录\
/你的球棒
创建或更新此文件,包括上述内容。注意不要删除其他内容(如果有)。您还可以通过使用不同的配置(如
'Release | AnyCPU'
和项目可能具有的其他配置)复制
PropertyGroup
,将此文件扩展到其他配置。(在某些版本的VS中,这可能通过接口实现)


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

我可以这样做,但我更愿意自动化该步骤,以简化调试周期。此外,有时脚本更复杂。同样,我可以只运行程序调用之前的脚本部分,但这意味着从VS切换,运行脚本,然后再切换回。这不是世界末日(这就是我现在正在做的事情),但我希望有一个很好的集成解决方案。使用生成后事件的问题是,每次运行时都需要进行生成。如果我只是在运行调试周期、设置不同的断点、考虑结果等,那么我不一定需要在运行之间进行生成。很好。您尝试过“自定义生成步骤”吗?在那里,您可以指定命令并选择何时执行。如果您选择“在运行之前执行”,则我猜即使未执行任何生成,它也会执行。我尝试了自定义生成步骤,使用“在运行之前执行”,并列出.bat文件(完全指定的路径)作为命令行,但它似乎没有运行。我在自定义生成步骤中没有得到错误,但运行.bat文件的效果没有出现,因此我假设它没有运行。我还尝试了在准备运行之前执行,同样的事情。还尝试了“调用foo.bat”,同样的东西。尝试了cmd.exe,同样的东西。即使我可以让它运行,仍然有一个问题。该项目是由cmake构建的大型解决方案的一部分。cmake清除了自定义构建。