如何从VisualStudio / MSBuild可靠地调用(MSYS git)bash

时间:2014-01-30 11:03:32

标签: visual-studio msbuild msys

我正在开发一个项目,其中大部分工作都是在Visual Studio 2012中完成的,隐式使用MSBuild。但是我必须集成一些unixy工具,我甚至还有一些bash脚本。这是可能的,因为我们已经在使用msysgit;工具和脚本工作得很好 如果你从git-bash shell调用它们。但我想从MSBuild中运行其中一些作为前/后构建操作。

问题是MSBuild如何找到bash?我们假设它存在,但开发人员只是将它安装在不同位置的PC上,很少将其添加到%PATH%。我想要一个涉及最少每台PC配置的解决方案。理想情况下根本没有。

2 个答案:

答案 0 :(得分:1)

假设您正在讨论用户安装(我们通常称之为Git for Windows) - 而不是允许您开发Git for Windows本身(我们实际上称之为msysGit)的开发人员安装 - 那么您应该能够简单地假设Git安装在%ProgramFiles%%ProgramFiles(x86)%中。您甚至可以添加第三个选项,例如%GitForWindows%,如果用户将其安装在其他位置,用户可以设置这个选项。

如果这还不够好,我确信InnoSetup安装程序(或Windows的已安装软件管理)会在注册表中留下一些痕迹,尽管这可能有点脆弱:您将依赖于不更改的注册表项,如初。

答案 1 :(得分:1)

我认为最简单的方法是为您的MsBuild解决方案定义合理的默认值,并让开发人员根据需要覆盖它。要求bashgit%PATH%上是合理的默认值,因此您可以将其描述为

<PropertyGroup>
  <BashCommand Condition="'$(BashCommand)' == ''">bash</BashCommand>
</PropertyGroup>

这样,任何想要覆盖设置的开发人员都可以通过在导入核心MsBuild文件之前定义值来实现此目的