[英]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.otemp.s
未處理的異常:System.ComponentModel.Win32Exception:
ApplicationName='sh', CommandLine='-c "as -o temp.otemp.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.