Как мне создать установщик только с exe и без зависимостей в Winforms? - PullRequest
0 голосов
/ 22 мая 2019

Я видел приложения, которые после установки имеют только файл .exe в папке и никаких зависимостей, которые не являются (нет dll, нет xml, нет ico) ничего. Я видел его в приложении Point of Sale .

Как мне сделать это, используя Visual Studio, Winforms и C#?

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Вы можете использовать Fody-Costura .Он поставляется в виде пакета NuGet и объединяет зависимости, так что в конце у вас есть один .exe.Отлично сработало для меня.

0 голосов
/ 22 мая 2019

Для объединения зависимостей (DLL и сборок) вы можете использовать Microsoft ILMerge . ILMerge - это утилита, которая объединяет несколько сборок .NET в одну сборку.

ILMerge берет набор входных сборок и объединяет их в одну целевая сборка. Первая сборка в списке входных сборок первичная сборка. Когда основная сборка является исполняемым файлом, тогда целевая сборка создается как исполняемый файл с той же записью указать в качестве основной сборки. Кроме того, если первичная сборка имеет строгое имя и файл .snk, тогда целевая сборка переподписан указанным ключом, чтобы он также имел строгое имя.

Пример:

    @echo off

:: this script needs https://www.nuget.org/packages/ilmerge

:: set your target executable name (typically [projectname].exe)
SET APP_NAME=myapp.exe

:: Set build, used for directory. Typically Release or Debug
SET ILMERGE_BUILD=Debug

:: Set platform, typically x64
SET ILMERGE_PLATFORM=x64

:: set your NuGet ILMerge Version, this is the number from the package manager install, for example:
:: PM> Install-Package ilmerge -Version 3.0.21
:: to confirm it is installed for a given project, see the packages.config file
SET ILMERGE_VERSION=3.0.21

:: the full ILMerge should be found here:
SET ILMERGE_PATH=%USERPROFILE%\.nuget\packages\ilmerge\%ILMERGE_VERSION%\tools\net452
:: dir "%ILMERGE_PATH%"\ILMerge.exe

echo Merging %APP_NAME% ...

:: add project DLL's starting with replacing the FirstLib with this project's DLL
"%ILMERGE_PATH%"\ILMerge.exe Bin\x64\Release\%APP_NAME%  ^
  /lib:Bin\%ILMERGE_PLATFORM%\%ILMERGE_BUILD%\ ^
  /out:%APP_NAME% ^
  FirstLib.dll ^
  mylib1.dll ^
  Microsoft.lib2.dll ^
  SomeOtherLib.dll ^
  \otherlibdir\otherlib.dll 


:Done
dir %APP_NAME%

Если вам трудно использовать ILMerge в командной строке или в процессе сборки, я предлагаю Инструмент ILMerge-Gui . Это дает вам короткий и простой интерфейс для объединения ваших зависимостей в один исполняемый файл.

IL Merge

Пожалуйста, не забудьте прочитать сайт ILMerge.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...