Windows上Vb.net VS2005应用程序的Mono运行时间最短?

时间:2008-11-25 17:20:20

标签: windows deployment mono runtime

有没有人知道,或者有文章或分步教程的链接,这会告诉我如何以最小的安装分发.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>

有什么建议吗?

2 个答案:

答案 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

我猜它不喜欢空格

感谢您的帮助!