2016年4月7日 星期四

Use Costura.Fody to bundle all assemblies into one ( 比 ILMerge 更好用 )

不論是 ILMerge 或是 LibZ,使用上都有一些限制 (參閱: 這裡)
在此,介紹一下 Costura.Fody ,它比 ILMerge或Libz更強大好用:

  • 可將 reflection, native DLLs, 或是3rd party 有使用 reflection 的應用程式整合成一個執行檔。
  • 可把 WPF 應用程式與其他 .Net 的DLL檔案 merge 成為單一執行檔。
  • 比 ILMerge 有更加的壓縮比率。大概是 ILMerge 壓縮出來執行檔的70%。


1).下載 Costura.Fody - 使用VS2015 的 NuGet Package Manager
  • 由 Reference 的 Manage NuGet Packages...下載 Costura.Fody (做法同 LibZ 的下載方式)

2).使用 Costura.Fody 來bundle 所有的 assemblies:
  • 下載之後,在這個project 底下有一個FordyWeavers.xml,編輯此 FodyWeavers.xml,把debug symbols 排除,如下:
          <?xml version="1.0" encoding="utf-8"?>
          <Weavers>
                <Costura IncludeDebugSymbols='false' />
          </Weavers>
  • 然後,在 VS2015 上面 Build 這個 project,<MyApp.exe> 檔案 size 會變大,變成一個單一執行檔。
       *** Costura.Fody 也可以直接用在 WPF app 上面!  夠簡單吧!

3).下載安裝Costura.Fody 之後,若要在VS2015設定 break point 來 debug 了,可以把 .csproj檔案修改如下:
  • <Import Project="~\..\..\Fody.targets" Condition=" '$(Configuration)' == 'Release' " />

相關連結:



沒有留言:

張貼留言