2012-03-30 47 views
0

有沒有一種方法來保持,因此不需要文件存在需要我的Visual C#程序(如SQLite的)實際EXE內任何DLL?大廈C#應用程序,內置的DLL

如果沒有,任何人都可以告訴我怎麼做我的程序的包裝(獨立.NET的,所以也許C++?),以啓動程序本身之前負載所需文件複製/到工作目錄。

什麼我打算到最後是可以在任何地方進行部署,並設置自己像一個變壓器一個EXE文件。它所需要的是以下條件:

  • SQLite是本
  • OpenHardwareMonitorLib是本
  • .NET 2.0安裝(如果不是,提供與發行包安裝)
+0

類似的問題:http://stackoverflow.com/q/753292/64096 – 2012-03-30 10:12:48

+0

考慮使用'mono'及其'mkbundle'工具。 – 2012-03-30 10:36:28

回答

2

微軟提供一個用於合併DLL的工具。它被稱爲ILMerge

它並不總是工作,我相信某些事情可能會導致問題。但它絕對是更簡單的選擇!

0

您可以將依賴關係合併到主可執行文件中。構建完成後,運行將IL代碼組合到一個程序集中的其他工具。

ILMerge可以做到這一點,但a bit cumbersome使用。一些(專有)工具也可以做到這一點。我知道至少有一個混淆器(DeepSea)可以做到這一點。 DeepSea還允許您指定要包含的內容以及要從生成的程序集中公開哪些類型。

全面披露:我知道,建立深海混淆的傢伙。

1

如果問題是隻引入一個文件,你可以創建一個「安裝程序」執行,即解開所有的依賴關係(從可執行內容)。 如果您不想在生產環境中保留所有dll,則可以將所有IL代碼合併到主可執行文件中。你可以使用ILMerge(但它不是唯一能夠做到的產品)