2

最小限のインストールで.net MONOアプリケーションを配布する方法を教えてくれる記事やステップバイステップのチュートリアルへのリンクを知っている人はいますか? Mono の完全なパッケージは 75 MB のようですが、その多くは必要のないコンパイラとライブラリであることはわかっています。

最小限のランタイム ファイルが必要です。

シンプルな「Hello World」winforms アプリ用に配布する必要があるファイルは何ですか?

動作するものを思いつくまでファイルを削除しようとしましたが、Mono がインストールされているマシンでしか動作しませんでした。ここに私が試したファイルがあります

アプリ用のディレクトリを作成しました。そのディレクトリに、さらに2つのディレクトリを作成しました

\bin\lib\mono\2.0

\mono\lib\mono\2.0 に mscorlib.dll ファイルを \bin ディレクトリに置き、以下を置きます

Accessibility.dll、MyApp.exe (これは私が VS2005 で行った基本的な Hello World です)、iconv.dll、intl.dll、libglib-2.0-0.dll、libgthread-2.0-0.dll、Microsoft.VisualBasic.dll、 mono.dll、mono.exe、Mono.Posix.dll、System.dll、System.Drawing.dll、System.Windows.Forms.dll

次に、\bin ディレクトリから「mono MyApp.exe」を実行したところ、Mono がインストールされたマシンでは動作しましたが、他のマシンでは動作しませんでした。

私が好むのは、実際のインストールは必要なく、含まれているランタイムファイルだけが必要な「xcopy」ソリューションです(サムドライブから実行する場合など)

これは、Linux ボックスではなく、Windows コンピュータで実行されることに注意してください。


mkbundle2 (これは .net 2.0 アプリです) を実行してみましたが、このエラーが発生しました

C:\Program Files\Mono-2.0.1\bin>mkbundle2 C:\Projects\SingleExeTest\bin\Release\SingleExeTest.exe --deps OS は: Windows ソース: 1 自動依存: 真の埋め込み: C:\Projects \SingleExeTest\bin\Release\SingleExeTest.exe 埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\mscorlib.dll 埋め込み: C:\PROGRA~1\MONO-2~1.1\lib \mono\2.0\Microsoft.VisualBasic.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib \mono\2.0\System.Configuration.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System.Xml.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1 \lib\mono\2.0\System.Security.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\Mono.Security.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System.Windows.Forms.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System .Drawing.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System.Data.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0 \Mono.Data.Tds.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\System.Transactions.dll 埋め込み: C:\PROGRA~1\MONO-2~1.1\lib \mono\2.0\System.EnterpriseServices.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\Mono.WebBrowser.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1 \lib\mono\2.0\Mono.Posix.dll
埋め込み: C:\PROGRA~1\MONO-2~1.1\lib\mono\2.0\Accessibility.dll コンパイル: as -o temp.o temp.s

未処理の例外: System.ComponentModel.Win32Exception: ApplicationName='sh', CommandLine='-c "as -o temp.o temp.s "', CurrentDirectory='' at System.Diagnostics.Process.Start_noshell (System.Diagnostics. ProcessStartIn fo startInfo、System.Diagnostics.Process プロセス) [0x00000] System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInfo、System.Diagnostics.Process プロセス) [0x00000] at System.Diagnostics.Process.Start ( System.Diagnostics.ProcessStartInfo start Info) MakeBundle.Execute (System.String cmdLine) で [0x00000] MakeBundle.GenerateBundles (System.Collections.ArrayList ファイル) で [0x00000] MakeBundle.Main (System.String[] 引数) で [0x00000] ) [0x00000]

C:\Program Files\Mono-2.0.1\bin>

助言がありますか?

4

2 に答える 2

3

Windows環境で使用できる自己完結型の実行可能ファイルを作成するには、「mkbundle」を使用する必要があります。最終結果は、必要なすべてのMonoライブラリを含む実行可能ファイルであり、不要なライブラリは含まれていません。

このWebページで「バンドル」の見出しを探してください。それはあなたを動かすはずです。これは純粋なMonoアプリ用であることに注意してください。GTKのような外部依存関係は処理しません。

ここから編集を開始

注:mkbundleのマニュアルページから...

ウィンドウズ

Windowsシステムでは、mkbundleを機能させるために、Unixライクなツールチェーンをインストールする必要があります。cygwinを使用して、gcc、gcc-mingwをパッケージとしてインストールできます。

binutilsパッケージにはasが含まれていることに注意してください。

cygwinはここにあります。(私はすべてのWindowsマシンにインストールし、強くお勧めします。)cygwinは開発マシンでのみ必要であることに注意してください。ターゲットにデプロイする必要はありません。

于 2008-11-25T18:02:43.550 に答える
1

ねえ、うまくいったようです!

Mono を c:\program files\mono ではなく c:\mono にインストールする必要がありました

スペースが気に入らなかったと思います

助けてくれてありがとう!

于 2008-11-25T22:07:45.927 に答える