高見知英のかいはつにっし(β)

高見知英のアプリケーション開発日誌 のほか、地域活動などの活動報告ブログ。

NAnt

そういえばSharpDevelop1.1のメニューから実行できるNAnt。これも立派なパッケージツールとして使えるはず・・・。と思って、ちょっと手をつけてみました。
なるほど。コンパイル作業はいろいろ面倒そうなので手をつけていないものの、ファイルのコピーくらいならこれに任せてもいける。せっかくAsPackagerなんてものつくりましたが、早くも不要品ですかねえ、これは(^^ゞ

ただ問題として、LZHでアーカイブすることができないことがあるのですが、これはまあ、LHA32などをパスの通ったディレクトリにおいておけば問題なし。ちょっと注意すればかなり使えるようですね。
以下のような感じで、ファイルをLZHで圧縮します。あらかじめ${tempDir}という変数を定義しておくこと。

    <exec program="Lha32.exe">
      <arg value="a"/>
      <arg value="-d1"/>
      <arg value="./${fileName}.lzh"/>
      <arg value="${tempDir}/"/>
      <arg value="*.*"/>
    </exec>

ZIPの場合はこう。こっちだけnAnt内蔵コマンドというのがちょっといびつな感じですが(^_^;

    <zip zipfile="./${fileName}.zip">
      <fileset basedir="${tempDir}">
        <includes name="**/*.*"/>
      </fileset>
    </zip>

ちょっと注意といったのが実はここで、tempDirをカレントディレクトリ以下においてしまうと、当然ながらそのディレクトリもアーカイブされてしまうということです。なので、tempDirはC:\Archivetemp など、カレントディレクトリと関係のない場所におかないといけません。それさえできていれば

    <copy todir="${tempDir}">
      <fileset>
        <includes name="${fileLocation}/${fileName}.${fileExt}"/>
        <includes name="${fileLocation}/${fileName}.xml"/>
      </fileset>
    </copy>
    
    <copy todir="${sourceDir}">
      <fileset>
        <!-- コンバイン ソリューション -->
        <includes name="**/*.sln"/>
        <includes name="**/*.cmbx"/>
        <!-- プロジェクト -->
        <includes name="**/*.prjx"/>
        <includes name="**/*.csproj"/>
        <includes name="**/*.csdproj"/>
        <!-- ソースコード -->
        <includes name="**/*.cs"/>
        <includes name="**/*.build"/>
        <!-- リソース -->
        <includes name="**/*.resource"/>
        <includes name="**/*.bmp"/>      
        <includes name="**/*.ico"/>
      </fileset>
    </copy>

こんな感じで簡単に。ファイルを移動、ディレクトリごとアーカイブができます。SharpDevelopだととくにゴミファイルは出ないのでこのまま。VisualStudioなどの場合は必要に応じてdeleteも必要でしょうね。


でもこれだと、NAnt -buildfile:ビルドファイル名 というコマンドを入力しなければいけないので、buildをダブルクリックで実行 というわけにはいきません。フロントエンドツールでも作っておいたほうがいいかもしれませんね。