有谁知道,或有一个链接到一篇文章或一步一步的教程,这将告诉我如何分发.net MONO应用程序与最低安装? 单声道的完整包是75 MB,但我知道很多是编译器和库,我不需要。
我只想要最小的运行时文件。
我需要为简单的“Hello World”winforms应用分发哪些文件?
我试图删除文件,直到我想出了一些工作,但它只能在安装了Mono的机器上工作。 这是我试过的文件
我为我的应用程序创build了一个目录。 在那个目录中,我创build了两个目录
\ 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'解决scheme,其中不需要实际的安装,只需要包含运行时文件(例如,当你从一个拇指驱动器运行)
请注意,这是在Windows计算机上运行,而不是在Linux机器上运行。
我试着运行mkbundle2(它是一个.net 2.0应用程序),并得到这个错误
C:\ Program Files \ Mono-2.0.1 \ bin> mkbundle2 C:\ Projects \ SingleExeTest \ bin \ Release \ SingleExeTest.exe –deps操作系统是:Windows来源:1自动依赖关系:真正embedded:C:\ Projects \ SingleExeTest \ bin \ Release \ SingleExeTest.exeembedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ mscorlib.dllembedded\单\ 2.0 \ Microsoft.VisualBasic.dll中
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Configuration.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Xml.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Security.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ Mono.Security.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Windows.Forms.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Drawing.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Data.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ Mono.Data.Tds.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.Transactions.dllembedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ System.EnterpriseServices .DLL
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ Mono.WebBrowser.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ Mono.Posix.dll
embedded:C:\ PROGRA〜1 \ MONO-2〜1.1 \ lib \ mono \ 2.0 \ Accessibility.dll编译:as -o temp.o temp.s在System.Diagnostics.Process.Start_noshell(System.Diagnostics。)中,未处理的exception:System.ComponentModel.Win32Exception:ApplicationName ='sh',CommandLine =' – c“为-o temp.o temp.s”',CurrentDirectory ='' System.Diagnostics.Process.StartIncommon(System.Diagnostics.ProcessStartInf或StartInfo,System.Diagnostics.Process进程)中的[0x00000] System.Diagnostics.Process.Start中的[0x00000] System.Ignostics.ProcessStartInfo start Info)MakeBundle.Execute(System.String cmdLine)[0x00000] MakeBundle.GenerateBundles(System.Collections.ArrayList文件)[0x00000] MakeBundle.Main [System.String [] args [0x00000] )[0x00000]
C:\ Program Files \ Mono-2.0.1 \ bin>
有什么build议么?
您需要使用“mkbundle”创建可在Windows环境中使用的自包含可执行文件。 最终结果是一个包含所有你需要的Mono库的可执行文件,而不是你不需要的。
在此网页上查找“捆绑”标题。 它应该让你去。 请注意,这是纯粹的单声道应用程序; 它不处理像GTK这样的外部依赖。
编辑在这里开始
注意:从mkbundle手册页…
视窗
在Windows系统上,需要安装类Unix工具链才能使mkbundle工作。 你可以使用cygwin的,并安装gcc,gcc-mingw和作为包。
请注意,binutils包中包含as。
cygwin可以在这里找到。 (我将它安装在我所有的Windows机器上,并强烈推荐它。)还要注意cygwin只在开发机器上需要。 它不需要部署到目标(S)。
嘿,看起来像我的工作!
我不得不安装单声道c:\ mono而不是c:\ program files \ mono
我猜它不喜欢空格
感谢您的帮助!