Scal DLLki w jeden plik exe (prosty sposób)

Za dużo plików

Za dużo plików

Rozwijam właśnie kod małego wewnętrznego toola (Desktop, WPF). Dotychczas wykorzystywane były tylko standardowe biblioteki WPF’a i wynikiem był jeden plik exe (powiedzmy appka.exe). Dotychczas wszystko było proste. Teraz dodałem bibliotekę i ta biblioteka musi być rozprowadzana razem z naszym appka.exe. Nie chcę tego, ponieważ ten tool ma być możliwie prosty i uruchomienie go powinno być tak proste jak przeniesienie jednego pliku (nie ma żadnego instalatora).

To co należy zrobić to Embedding DLLs in a compiled executable i chcę to mieć podpięte do procesu budowania aplikacji. Historia tego pytania na StackOverflow doskonale pokazuje jak to się robiło przez lata a jak można teraz.

Kiedyś ILMerge

Kilka lat temu robiłem coś takiego za pomocą pierwszego sposobu czyli ILMerge (Merge DLL into EXE? lub Combining Assemblies Using ILMerge). Wymagało to własnego Post build event wyglądającego jak:


ilmerge /target:winexe /out:c:\output.exe c:\input.exe C:\input.dll

Dobrze byłoby jeszcze usunąć te już zbędne biblioteki. Jest kilka miejsc, w którym podczas utrzymywania takich konfiguracji coś się może popsuć. Przez lata tak to się właśnie robiło (niestety).

Teraz Costura.Fody

Teraz jest rozwiązanie out of the box Costura.Fody. Ściągamy Nugeta. Od teraz wszystkie DLL’ki które normalnie byłyby skopiowane (Copy to Output Directory) będą zmergowane do appka.exe. Można jeszcze wrzucić (do Fody.targets nie do app.config):

<Target AfterTargets="AfterBuild;NonWinFodyTarget"
        Name="CleanReferenceCopyLocalPaths">
  <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
</Target>

aby wyczyścić te DLL’ki które nie są już potrzebne. Efekt:

Jeden wygodny plik

Jeden wygodny plik

Reklamy
Ten wpis został opublikowany w kategorii Programowanie i oznaczony tagami , , . Dodaj zakładkę do bezpośredniego odnośnika.

3 odpowiedzi na „Scal DLLki w jeden plik exe (prosty sposób)

  1. Pingback: dotnetomaniak.pl

  2. Adam Kondraciuk pisze:

    A no to wreszcie w prosty sposób pozbędę się katalogu DLL-ki

  3. Pingback: Fody ciekawa ptaszyna – część 2 | Wojtek Pitek about dev

Możliwość komentowania jest wyłączona.