2009-12-09 25 views
6

我有一個.net 3.5應用程序,我想使它具有可移植性。 它很簡單,運行完美,我已經發送了.EXE + .DLL的一些朋友,它運行與.DLL和.ICO(我用它在一起)在同一文件夾。在C#中創建可移植(非安裝)的Windows應用程序

我想要的很簡單:創建一個單獨的EXE文件,它關心的是DLL,圖像和任何我想要的東西,而不需要安裝,也不需要安裝。 (又名便攜式)

我可能會考慮將其遷移到.net 2.0如果需要,我不使用任何3.5-only功能,實際上,我不確定爲什麼我使用3.5(我是新的在編程無論如何)

我想要的任何提示,鏈接或解釋如何做到這一點,因爲它真的很煩人發送.rar's給我的朋友,並告訴他們提取和運行.exe中的所有「奇怪的文件「,因爲他們打電話(此外,不是每個人都有文件夾中的擴展顯示,所以這是一場噩夢)

(我已經在StackOverflow搜索,並沒有發現任何問題,回答我問,唯一的問題一個我發現它最終在討論fram ework available in windows machines,language chosen and no good answers。)

+0

我認爲你的意思很容易分配 - 不是便攜式(便攜手段運行在不同的操作系統和/或硬件體系結構上)。 – Oded 2009-12-09 11:23:45

+0

來吧,讓我們來討論一下,這個問題的一個答案(可能會讓很多人感興趣)太少了!我在此提供可能對回答有用的任何其他信息。 – Marcelo 2009-12-09 12:02:11

+3

@Oded - portable現在是那些具有多重意義的詞語之一,它的使用意味着跨平臺,但現在它經常(more?)意味着「無需安裝即可從USB棒或等效物運行」 – Murph 2009-12-09 12:02:56

回答

10

您可以使用ILMerge將所有程序集合併到您的可執行文件中。我希望你的圖標已經成爲一種嵌入式資源 - 或者你至少應該能夠像這樣創建它。

針對.NET 2.0將使應用程序的可移植性更爲廣泛,因爲它只能在僅安裝了.NET 2.0的機器上工作 - 但我不知道2.0和3.5部署的比例如何,以及更多重要的是,它們可能不會與您目標受衆以外的部署的比例相同。

+0

謝謝!關於圖標,我不知道該怎麼做,但我會弄明白。我會繼續等待,也許會更好! – Marcelo 2009-12-09 12:01:37

3

您可以將應用程序所需的任何數據(程序集,圖標等)作爲資源或嵌入式文件添加。

無論是使用資源編輯器,或者如果您想讓自己的手變髒,只需右鍵單擊解決方案資源管理器中的項目並執行「添加現有項目」即可添加任何文件,獲取文件屬性並將Build Aciton設置爲「嵌入式資源」。

喜歡的圖標資源正好可以直接使用 - 作爲DrawIcon(Properties.Resources.MyIcon)

數據文件可以使用Application.GetManifestResource(和相關方法)來獲取流從加載加載。例如,對於程序集,您可以直接從清單資源流中爲您的資源使用Assembly.Load()。

+0

P.S.這樣做的好處是,將數據文件和程序集嵌入到.exe中非常簡單,維護起來非常容易,所有文件都會自動在解決方案資源管理器中列出,並且不需要任何第三方工具或構建後步驟使其工作 - 這一切都依賴於內置的VS/C#/ .net2.0功能。 – 2009-12-14 20:20:54

相關問題