在MonoDevelop和Visual Studio上使用post-build脚本制作项目的最佳方法是什么?

Ear*_*rlz 19 .net linux cross-platform monodevelop visual-studio

我有一个开源项目,我试图在MonoDevelop(包括*nix)和Visual Studio上进行开发.我最近发现的一个要求是我需要将输出文件从一个目录复制到另一个目录(相对路径).

但是Windows有copy命令,而*nix有cp命令.在两个平台上使用它并解决这些命令差异的最佳方法是什么?

Zon*_*nko 13

您可以$OS根据环境使用该变量来创建不同的后期构建事件.为此,您必须手动编辑csproj,如:

<PostBuildEvent Condition="'$(OS)' == 'Windows_NT' ">
    dir
</PostBuildEvent>
<PostBuildEvent Condition="'$(OS)' != 'Windows_NT'">
    ls
</PostBuildEvent>
Run Code Online (Sandbox Code Playgroud)


pie*_*rs7 11

在可能的情况下,如果您可以依靠内置的MSBuild任务而不是自定义shell脚本,那么该行为通常可以在xbuild上工作(因此MonoDevelop?)而无需任何更改,因此不需要特定于平台的*proj hacks.

例如:

 <Target Name="AfterBuild">
          <Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" />
 </Target>
Run Code Online (Sandbox Code Playgroud)

这来自单声道文档:http: //www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#prepostbuildevents


Ben*_*Key 1

您可以使用 Python 等语言编写构建后脚本。或者您可以要求其他开发人员安装 GnuWin32 CoreUtils 作为安装 CygWin 的选项。CoreUtils 包括 cp。然后就可以无条件使用cp了。