15

単純な純粋な.Net2.0コンソールユーティリティを、CLRおよびフレームワークライブラリが特定のマシンにインストールされているかどうかを心配することなく、USBスティックに置いて実行できるポータブルexeに変換したいと思います。

Stackoverflowには、.Netプロジェクトから自己完結型のWindows exeを作成するためのMonoMkbundleの使用に関する情報がすでにいくつかありますが、私が欲しいのはコンパクトで便利なHOWTOです。

単純なC#Visual Studioプロジェクトから移植性を実現するための最小手順は何ですか?

4

1 に答える 1

16

ここで簡単なハウツーを見つけましたが、自分でテストしていないため、結果を保証することはできません. いつものYMMV。

元の記事からの引用 (元の記事のスレッドも参照してください):

Mkbundle: Mono をアプリケーションにバンドル

プログラムを実行するために、なぜ .NET Framework や Mono をインストールする必要があるのか​​疑問に思ったことはありませんか? クライアントに追加のフレームワークをインストールするようにせがむことなくアプリケーションを配布できれば、はるかに便利ですよね? ここにいます。.NET ベースのアプリケーションを Mono にバンドルできるので、実行するために Mono や .NET をインストールする必要はありません。

環境を準備する

まず、最新の Mono と Cygwin をインストールする必要があります。Mono のインストールは非常に簡単なので、失敗することはありません。Cygwin のインストールを開始したら、フル ビューに進み、4 つの追加パッケージを含めてください。これらは、gcc、mingw、mingw-zlib、および zlib です。

次に、コマンド プロンプトが必要です。Mono と Cygwin はどちらもデスクトップにコマンド プロンプトのショートカットを作成しますが、それらを 1 つにまとめる必要があります。ここに私のためにそれを行うバッチがあります。たとえば、他の Mono バージョンがある場合は、変更する必要があるかもしれません。

コード:

echo Mono version 2.4 Build 6
echo Prepending 'C:\PROGRA~1\Mono-2.4\bin' to PATH
PATH=C:\PROGRA~1\Mono-2.4\bin;%PATH%

chdir C:\cygwin\bin
bash --login -i

アプリケーションを Mono にバンドルする

これで、コマンド プロンプトが表示され、この Cygwin モードが実行されます。これはもはや DOS プロンプトではなく、"dir" はもはや機能しないことに注意してください。ファイルを一覧表示するには、Linux コマンド「ls」を使用します。現在閲覧しているフォルダは以下のようなものです。Arek はユーザー名です。コード:

C:\cygwin\home\Arek

エクスプローラーでこのフォルダーを参照します。ここで、2 つのファイルをこのフォルダーにコピーします。1 番目はアプリケーションの exe で、2 番目は Mono フォルダーにあるファイル Mono.dll (2MB) です。コード:

C:\Program Files\Mono-2.4\bin

何らかの理由で、手順全体が長いファイル名では機能しないため、アプリケーションの名前を exe に変更してください。この古い DOS 8.3 の命名に準拠する必要があります。

コマンドプロンプトに戻りましょう。アプリケーションをバンドルするために必要なコマンドは 1 つだけです。ここにいくつかの説明があります。

mkbundle は Mono パッケージ内のプログラムです | -o Bundled1.exe は、Mono-bundled exe の命名方法を指定します。Winform1.exe は何が含まれるかを示していますが、Mono ライブラリはとにかく含まれます | --deps は必要ですが、それが何をするのかはわかりません | -z は、出力 exe を大幅に圧縮します

コード:

mkbundle -o Bundled1.exe Winform1.exe --deps -z

これで、独自のアプリと Mono 自体を含む Bundled1.exe を取得できました。実行するのに Mono も .NET も必要ありません。サイズが 4MB 以上になることに注意してください。これらのバンドルされた exe は軽量ではありません。

于 2009-08-24T09:17:07.790 に答える