有没有人知道,或者有一个链接到一篇文章或一步一步的教程,这会告诉我如何发布一个.net单点应用程序的最低安装?完整的Mono包大约是75 MB,但我知道很多都是我不需要的编译器和库。
我只想要最小的运行时文件。
为了一个简单的“Hello”WinForms应用程序,我需要分发哪些文件?
我试着删除文件,直到我想出了一些有用的东西,但它只能在安装了Mono的机器上工作。这是我试过的文件
我为我的应用程序创建了一个目录。在这个目录中,我又创建了两个目录
\bin\lib\mono\2.0在\mono\lib\mono\2.0中,我将mscorlib.dll文件放在\bin目录下
Accessibility.dllMyApp.exe (这是我在VS2005中做的基本世界)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文件\Mono-2.0.1\bin>mkbundle2 2C:\Projects\SingleExeTest\bin\Release\SingleExeTest.exe--deps操作系统是: 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 tem.otemp.s未处理异常: System.ComponentModel.Win32Exception: ApplicationName='sh',CommandLine='-c“作为-o tem.otemp.s”, System.Diagnostics.Process.Start_noshell的CurrentDirectory='‘ (System.Diagnostics.ProcessStartIn fo 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 ) MakeBundle.Execute (System.String cmdLine) 0x00000在MakeBundle.GenerateBundles (System.Collections.ArrayList文件) 0x00000 at MakeBundle.Main (System.String[] args) 0x00000C:\Program Files\Mono-2.0.1\bin>\
发布于 2008-11-25 22:07:45
看来我让它起作用了!
我不得不在c:\mono中安装Mono而不是c:\program files\mono
我想它不喜欢这里的空间。
发布于 2008-11-25 18:02:43
您需要使用"mkbundle“来创建一个可在Windows环境中使用的自包含可执行文件。最终结果是一个可执行文件,它包含您需要的所有Mono库,而没有一个是您不需要的。
查找本网页上的“bundle”标题。它应该能让你走。请注意,这是针对纯Mono应用程序的;它不处理GTK之类的外部依赖项。
编辑从这里开始,
注意:从mkbundle手册页..。
Windows 在Windows系统上,mkbundle需要安装类似Unix的工具链才能工作。您可以使用cygwin和安装gcc,gcc-mingw和作为软件包.
注意,binutils包包含的是。
cygwin可以被发现这里。(我将它安装在我所有的Windows机器上,并强烈推荐它。)还请注意,cygwin只需要在dev机器上使用。它不需要部署到目标上。
https://stackoverflow.com/questions/318175
复制相似问题