我有一个开源项目,我试图在MonoDevelop(包括* nix)和Visual Studio上进行开发。我最近发现的一个要求是我需要将输出文件从一个目录复制到另一个目录(相对路径)。
Windows但是具有copy
命令,而* nix具有cp
命令。在两个平台上使用它并解决这些命令差异的最佳方法是什么?
答案 0 :(得分:13)
您可以使用$OS
变量根据环境设置不同的后期构建事件。为此,您必须手动编辑csproj,如:
<PostBuildEvent Condition="'$(OS)' == 'Windows_NT' ">
dir
</PostBuildEvent>
<PostBuildEvent Condition="'$(OS)' != 'Windows_NT'">
ls
</PostBuildEvent>
答案 1 :(得分:11)
如果可能的话,如果您可以依靠内置的MSBuild任务而不是自定义shell脚本,那么该行为通常可以在xbuild(因而是MonoDevelop?)上运行而无需任何更改,因此不需要特定于平台的* proj hacks。
例如:
$http({
method: 'GET',
url: '/someUrl'
}).then(function successCallback(response) {
// this callback will be called asynchronously
// when the response is available
}, function errorCallback(response) {
// called asynchronously if an error occurs
// or server returns response with an error status.
});
这是来自单声道文档: http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#prepostbuildevents
答案 2 :(得分:1)
你可以用像Python这样的语言编写post build脚本。或者您可以要求其他开发人员安装GnuWin32 CoreUtils作为安装CygWin的选项。 CoreUtils包括cp。然后你可以无条件地使用cp。