2012-10-31 6 views
10

私はMonoDevelop(* nixを含む)とVisual Studioの両方で開発を可能にしようとしているオープンソースプロジェクトを持っています。最近発見された要件の1つは、出力ファイルをあるディレクトリから別のディレクトリにコピーする必要があることです(相対パス)。MonoDevelopとVisual Studioでポストビルドスクリプトを使用してプロジェクトを作成する最も良い方法は?

ただし、Windowsの場合はcopyコマンド、* nixの場合はcpコマンドです。これを両方のプラットフォームで動作させ、このコマンドの違いを解決する最良の方法は何ですか?

+0

」提供する:

<Target Name="AfterBuild"> <Copy SourceFiles="foo.txt" DestinationFolder="$(OutDir)" /> </Target> 

これはモノのドキュメントからですLinuxのルック・アンド・フィールの環境を実現します。もっと見る:http://www.cygwin.com/ – nieve

+1

@nieve私はそれをインストールしたばかりだが、Windows上で自分のプロジェクトをコンパイルしたい人全員にインストールするよう強制したくない。 – Earlz

+0

他の開発者の環境をセットアップするためのインストールスクリプト(rake/makeのようなもの)があり、OSに従ってポストビルドスクリプトを使用するかどうかが決まります。 MonoDevelopを構築する方法を見ると、異なる環境/ OSに対して異なるメカニズムを使用していることがわかります。 – nieve

答えて

0

ポストビルドスクリプトをPythonのような言語で書くことができます。あるいは、CygWinをインストールするためのオプションとしてGnuWin32 CoreUtilsをインストールする必要があります。 CoreUtilsにはcpが含まれています。それでは、無条件にcpを使うことができます。

8

環境によっては、$OS変数を使用して異なるポストビルドイベントを使用できます。これを行うには、あなたが手でcsprojを編集する必要があり、同様に:あなたはビルトインのMSBuildタスクではなくカスタムシェルスクリプトよりも上に傾くことができるかどう

<PostBuildEvent Condition="'$(OS)' == 'Windows_NT' "> 
    dir 
</PostBuildEvent> 
<PostBuildEvent Condition="'$(OS)' != 'Windows_NT'"> 
    ls 
</PostBuildEvent> 
5

可能、動作は一般的にxbuild上で動作(ひいてはますMonoDevelop?)を変更せずに、プラットフォーム固有の* projハックを必要としません。

例えば:、あなたはすべてのためのスクリプトを1つ持っていることについて、本当に断固している場合、あなたはcygwinの中に顔をしているしたい場合があります http://www.mono-project.com/archived/porting_msbuild_projects_to_xbuild/#prepostbuildevents

関連する問題