有没有人知道,或者有文章或分步教程的链接,这会告诉我如何以最小的安装分发.net MONO应用程序?完整的Mono包就像75 MB,但我知道很多是我不需要的编译器和库。
我只想要最小的运行时文件。
我需要为简单的“Hello World”winforms应用分发哪些文件?
我尝试删除文件,直到我想出了一些有用的东西,但它只适用于安装了Mono的机器。这是我试过的文件
我为我的应用创建了一个目录。在该目录中,我创建了另外两个目录
\ BIN \ lib中\单\ 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'解决方案,其中不需要实际安装,只需要包含运行时文件(例如从拇指驱动器运行时)
请注意,这是在Windows计算机上运行,而不是在Linux计算机上运行。
我尝试运行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中\单\ 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中\单\ 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中\单\ 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中\单\ 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”', System.Diagnostics.Process.Start_noshell中的CurrentDirectory ='' (System.Diagnostics.ProcessStartIn for startInfo, System.Diagnostics.Process进程)[0x00000] at System.Diagnostics.Process.Start_common (System.Diagnostics.ProcessStartInf o startInfo, System.Diagnostics.Process进程)[0x00000] at System.Diagnostics.Process.Start(System.Diagnostics.ProcessStartInfo 启动Info)[0x00000]在MakeBundle.Execute(System.String cmdLine) [0x00000]在MakeBundle.GenerateBundles MakeBundle.Main中的(System.Collections.ArrayList文件)[0x00000] (System.String [] args)[0x00000]
C:\ Program Files \ Mono-2.0.1 \ bin>
有什么建议吗?
答案 0 :(得分:3)
您需要使用“mkbundle”来创建可在Windows环境中使用的自包含可执行文件。最终结果是一个可执行文件,其中包含您需要的所有Mono库,而不包含您不需要的所有库。
在this webpage上查找“捆绑”标题。它应该让你去。请注意,这适用于纯Mono应用程序;它不处理像GTK这样的外部依赖。
编辑从这里开始
注意:从mkbundle手册页...
<强>窗强>
在Windows系统上,必须使用类似Unix的工具链 为mkbundle安装工作。你可以使用cygwin并安装gcc, gcc-mingw和包。
请注意,binutils包中包含as。
可以找到cygwin here。 (我在所有Windows机器上安装它并强烈推荐它。)另请注意,只有开发机器才需要cygwin。它不需要部署到目标。
答案 1 :(得分:1)
我必须在c:\ mono而不是c:\ program files \ mono
中安装Mono我猜它不喜欢空格
感谢您的帮助!