我有一个开源项目,我想在MonoDevelop(包括*nix)和Visual Studio上进行开发。我最近发现的要求之一是我需要将一个输出文件从一个目录复制到另一个目录(相对路径)。
然而,Windows有copy
命令,*nix有cp
命令。如何最好地让它们在两个平台上都能正常工作,并解决这些命令间的差异?
我有一个开源项目,我想在MonoDevelop(包括*nix)和Visual Studio上进行开发。我最近发现的要求之一是我需要将一个输出文件从一个目录复制到另一个目录(相对路径)。
然而,Windows有copy
命令,*nix有cp
命令。如何最好地让它们在两个平台上都能正常工作,并解决这些命令间的差异?
如果可能的话,尽量使用内置的MSBuild任务而不是自定义脚本,这样的行为通常可以在xbuild(和因此MonoDevelop?)上正常工作,无需进行任何更改,因此无需进行平台特定的*proj修改。
例如:
<Target Name="AfterBuild">
<Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" />
</Target>
这段内容来自Mono的文档: http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#prepostbuildevents
您可以使用$OS
变量根据不同的环境设置不同的后构建事件。为此,您必须手动编辑csproj文件,例如:
您可以使用$OS
变量根据环境不同设置不同的后构建事件。为此,您需要手动编辑csproj文件,例如:
<PostBuildEvent Condition="'$(OS)' == 'Windows_NT' ">
dir
</PostBuildEvent>
<PostBuildEvent Condition="'$(OS)' != 'Windows_NT'">
ls
</PostBuildEvent>