【问题标题】:Calling batch/script files from VC6/VC2005/VC2008 project files从 VC6/VC2005/VC2008 项目文件调用批处理/脚本文件
【发布时间】:2010-09-17 15:48:18
【问题描述】:

有没有办法从 VC6(及更高版本)项目文件中调用外部脚本或批处理文件?

我有一个后台进程,我需要在尝试构建某些项目(DLLS、可执行文件)之前将其终止,并且还没有找到从项目本身成功执行此操作的方法。我只想调用一个包含 taskkill 命令的批处理文件。

(是的,我可以在构建项目之前从命令行运行批处理文件,但我并不总是记得这样做,并且自动完成对整个开发团队来说更方便且不那么烦人。)

【问题讨论】:

    标签: visual-studio batch-file scripting project


    【解决方案1】:

    至少对于 Visual Studio 2008 中的 C#,您可以打开项目文件并在文件中找到以下注释:

    <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
       Other similar extension points exist, see Microsoft.Common.targets.
    <Target Name="BeforeBuild">
    </Target>
    <Target Name="AfterBuild">
    </Target>
    -->
    

    取消注释最适合您的一项,在本例中为“BeforeBuild”项。然后用你的批处理文件替换我这里的那个:

    <Target Name="BeforeBuild">
       <Exec Command="MyBatchFile.bat" />
    </Target>
    

    仅此而已;每当您构建该项目时,每次都会发生这种情况。

    也就是说,我不知道这是否适用于 VS 2005,尤其是 VC6。 YMMV!

    【讨论】:

    • 我在我的 VC++ 2008 vcproj 文件中找不到类似这样的内容。 MMDV!
    • 啊,感谢您告诉我 - 我使用 C#,但不知道 IDE 中的所有语言是否都适用。我将编辑答案以反映这一点。
    【解决方案2】:

    您可以创建一个具有构建后事件的实用程序项目(配置类型:项目属性页面中的实用程序)。然后,您从该 Post-Build 事件中调用批处理文件。如果我没记错的话,实用程序配置出现在 VS2005 中。但我相信在 VC6 上使用另一种类型的配置也可以达到同样的效果。

    这是一个设置示例(这是构建后事件的命令行属性的文本):

    set solutionDir=$(SolutionDir)
    set platformName=$(PlatformName)
    set configurationName=$(ConfigurationName)
    
    call $(SolutionDir)PostBuild.bat
    

    如您所见,您拥有基于 VisualStudio 宏自定义批处理环境的所有灵活性。

    如果您希望每次构建时都调用此批处理文件,请将依赖项添加到需要的项目(例如您的主可执行文件或 dll 项目)。您可以将批处理文件添加到解决方案项以方便访问(右键单击解决方案并选择添加 -> 现有项...)。

    您甚至可以在此实用程序项目上调用构建命令来强制执行批处理文件。

    在工作中,我们有一个类似的设置来在每次触发构建时开始我们的单元测试。

    【讨论】:

      【解决方案3】:

      您可以从custom build step or a build event 调用它。

      【讨论】:

      • 我不介意 -1 但我想知道为什么这是一个坏主意。 (PS:请不要再删除此评论)
      猜你喜欢
      • 2014-10-14
      • 2015-11-30
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2012-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多