我正在研究VB.NET中一個相對簡單的程序。我正在嘗試爲用戶儘可能簡化安裝過程。獨立執行
我知道它可以使用調試目錄中的可執行文件作爲獨立的可執行文件,但是這種方法有什麼缺點嗎?例如,如果用戶的機器上沒有.NET,程序將不會運行。
有沒有辦法發佈該程序,使其包含在單個可執行文件中?
感謝您的幫助。
我正在研究VB.NET中一個相對簡單的程序。我正在嘗試爲用戶儘可能簡化安裝過程。獨立執行
我知道它可以使用調試目錄中的可執行文件作爲獨立的可執行文件,但是這種方法有什麼缺點嗎?例如,如果用戶的機器上沒有.NET,程序將不會運行。
有沒有辦法發佈該程序,使其包含在單個可執行文件中?
感謝您的幫助。
我認爲ClickOnce部署可執行文件是您實現此目標的最佳選擇。 這裏是一個很好的教程,如何做到這一點:ClickOnce Deployment
我非常喜歡ClickOnce,但由於它對安裝程序有着「不尋常」的外觀,許多用戶會認爲它很陰暗或令人困惑。我甚至認爲這是我第一次嘗試它。只要考慮一下,如果你釋放到「羣衆」。 – 2010-04-14 01:54:19
我不認爲.NET程序通常可以製作成獨立的程序,因爲.NET框架被設計爲與程序分開。但是,在使用可分發.NET包進行安裝期間,您是否考慮過installing the framework?這將確保用戶擁有最新版本的.NET,如果他們還沒有。
(我已經鏈接到2.0包在這裏,你可能需要一個較新的版本。)
紅門智能裝配可以編譯.NET程序集到一個獨立的可執行文件。它可以將所有依賴項嵌入到可執行文件中。
它不是免費的,但它確實帶有其他非常有用的工具。我們最近已經開始使用它,到目前爲止它已經非常有用。
Microsoft提供免費的ILMerge:「ILMerge是一個將多個.NET程序集合到一個.NET程序集中的工具,它可用於可執行文件和DLL,並提供了多種用於控制輸出處理和格式的選項。有關詳情的文檔。「 - http://www.microsoft.com/downloads/details.aspx?familyid=22914587-b4ad-4eae-87cf-b14ae6a939b0&displaylang=en – 2010-09-03 02:29:56
正如我所提到微軟提供的ILMerge,但如果你不想使用第三方應用程序,這是你如何自己編寫的。你的客戶仍然需要.Net框架,但它可以讓你隱藏你的依賴關係。如果您想要包含.Net dll,那麼您必須在參考設置中將您的引用設置爲「copy local」。
該程序要求您將dll添加爲資源。只要你的程序需要這個dll,它就會通過使用程序集解析鉤來按需加載它。如果你有多個dll,你必須有一個switch case或一個列表查找,它根據ResolveEventArgs.Name加載正確的dll。
Module Program
''//Entry Point add dependency resolver hook
Sub Main()
AddHandler AppDomain.CurrentDomain.AssemblyResolve, _
AddressOf AssemblyReslover
End Sub
Private Function AssemblyReslover(ByVal sender As Object, _
ByVal e As ResolveEventArgs) _
As Assembly
''//ReferenceAssembly
Dim ra As Assembly
ra = Assembly.Load(My.Resources.MyDLL)
Return ra
End Function
End Module
必須有一個辦法,包括相關文件的資源。我知道這會讓你的獨立exe文件膨脹,但它確實是獨立的。 – 2010-09-01 18:54:25