簡體   English   中英

Windows 上 Vb.net VS2005 應用程序的 Mono 最小運行時間?

[英]Minimal runtime for Mono for a Vb.net VS2005 app on Windows?

有誰知道,或者有文章或分步教程的鏈接,可以告訴我如何以最低安裝量分發 .net MONO 應用程序? Mono 的完整包大約是 75 MB,但我知道其中很多是我不需要的編譯器和庫。

我只想要最少的運行時文件。

我需要為一個簡單的“Hello World”WinForms 應用程序分發哪些文件?

我嘗試只刪除文件,直到我想出一些可行的方法,但它只在安裝了 Mono 的機器上有效。 這是我嘗試過的文件

我為我的應用程序創建了一個目錄。 在那個目錄中,我創建了另外兩個目錄

  • \bin
  • \lib\mono\2.0

\mono\lib\mono\2.0我把mscorlib.dll文件放在\bin目錄中我把以下

  • Accessibility.dll
  • MyApp.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 Files\Mono-2.0.1\bin>mkbundle2
C:\Projects\SingleExeTest\bin\Release\SingleExeTest.exe 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 temp.o temp.s

未處理的異常:System.ComponentModel.Win32Exception:
ApplicationName='sh', CommandLine='-c "as -o temp.o temp.s "',
CurrentDirectory='' 在 System.Diagnostics.Process.Start_noshell
(System.Diagnostics.ProcessStartInfo startInfo,
System.Diagnostics.Process 進程)[0x00000] 在
System.Diagnostics.Process.Start_common
(System.Diagnostics.ProcessStartInfo o startInfo,
System.Diagnostics.Process 進程)[0x00000] 在
System.Diagnostics.Process.Start (System.Diagnostics.ProcessStartInfo
在 MakeBundle.Execute (System.String cmdLine) 處啟動 Info) [0x00000]
[0x00000] 在 MakeBundle.GenerateBundles
(System.Collections.ArrayList 文件)[0x00000] 在 MakeBundle.Main
(System.String[] 參數) [0x00000]

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

您需要使用“mkbundle”創建一個可以在 Windows 環境中使用的自包含可執行文件。 最終結果是一個可執行文件,其中包含您需要的所有 Mono 庫,而沒有您不需要的庫。

此網頁上查找“捆綁包”標題。 它應該讓你前進。 請注意,這適用於純 Mono 應用程序; 它不處理像 GTK 這樣的外部依賴項。

編輯從這里開始

注意:從 mkbundle 手冊頁...

視窗

在 Windows 系統上,必須安裝類 Unix 工具鏈才能使 mkbundle 工作。 您可以使用 cygwin 並安裝 gcc、gcc-mingw 和軟件包。

請注意,binutils 包中包含 as。

cygwin 可以在這里找到。 (我將它安裝在我所有的 Windows 機器上並強烈推薦它。)另請注意,cygwin 僅在開發機器上是必需的。 它不需要部署到目標。

看起來我讓它工作了!

我必須在c:\mono而不是c:\program files\mono中安裝 Mono

我猜它不喜歡空格。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM