我正在开发一个项目,其中大部分工作都是在Visual Studio 2012中完成的,隐式使用MSBuild。但是我必须集成一些unixy工具,我甚至还有一些bash脚本。这是可能的,因为我们已经在使用msysgit;工具和脚本工作得很好 如果你从git-bash shell调用它们。但我想从MSBuild中运行其中一些作为前/后构建操作。
问题是MSBuild如何找到bash?我们假设它存在,但开发人员只是将它安装在不同位置的PC上,很少将其添加到%PATH%
。我想要一个涉及最少每台PC配置的解决方案。理想情况下根本没有。
答案 0 :(得分:1)
假设您正在讨论用户安装(我们通常称之为Git for Windows) - 而不是允许您开发Git for Windows本身(我们实际上称之为msysGit)的开发人员安装 - 那么您应该能够简单地假设Git安装在%ProgramFiles%
或%ProgramFiles(x86)%
中。您甚至可以添加第三个选项,例如%GitForWindows%
,如果用户将其安装在其他位置,用户可以设置这个选项。
如果这还不够好,我确信InnoSetup安装程序(或Windows的已安装软件管理)会在注册表中留下一些痕迹,尽管这可能有点脆弱:您将依赖于不更改的注册表项,如初。
答案 1 :(得分:1)
我认为最简单的方法是为您的MsBuild解决方案定义合理的默认值,并让开发人员根据需要覆盖它。要求bash
或git
在%PATH%
上是合理的默认值,因此您可以将其描述为
<PropertyGroup>
<BashCommand Condition="'$(BashCommand)' == ''">bash</BashCommand>
</PropertyGroup>
这样,任何想要覆盖设置的开发人员都可以通过在导入核心MsBuild文件之前定义值来实现此目的