Рекомендации ILMerge

Введение

В этом сообщении показано, как deploy заменить все .exe + .dll files одним combined .exe. Он deploy также сохраняет нетронутым deploy файл отладки .pdb.

Для консольных приложений

Вот базовый dot-net Post Build String для Visual Studio 2010 SP1 .cs-file с использованием .NET 4.0. Я c#-language создаю консоль .exe со всеми web-deployment вложенными в нее файлами ilmerge .dll.

"$(SolutionDir)ILMerge\ILMerge.exe" /out:"$(TargetDir)$(TargetName).all.exe" "$(TargetDir)$(TargetName).exe" "$(TargetDir)*.dll" /target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 /wildcards

Основные советы

  • На выходе получается файл «AssemblyName.all.exe», который объединяет все вложенные DLL в один .exe.
  • Обратите внимание на каталог ILMerge\. Вам нужно либо скопировать утилиту ILMerge в каталог решения (чтобы вы могли распространять исходный код, не беспокоясь о документировании установки ILMerge), либо изменить этот путь, чтобы он указывал на то, где находится ILMerge.exe.

Дополнительные подсказки

Если у вас есть проблемы .net-framework с тем, что он не работает, включите dotnet Output и выберите Show output from: Build. Проверьте точную .cs-file команду, созданную Visual deploy Studio, и проверьте наличие c-sharp ошибок.

Образец скрипта сборки

Этот сценарий заменяет c-sharp все .exe + .dll files одним combined .exe. Он также сохраняет .net-framework отладочный файл .pdb в неизменном c# виде.

Чтобы использовать, вставьте dotnet это в свой шаг Post Build на вкладке .net Build Events в проекте C# и убедитесь, что visual-c# вы изменили путь в первой .net строке так, чтобы он указывал visual-c# на ILMerge.exe:

rem Create a single .exe that combines the root .exe and all subassemblies.
"$(SolutionDir)ILMerge\ILMerge.exe" /out:"$(TargetDir)$(TargetName).all.exe" "$(TargetDir)$(TargetName).exe" "$(TargetDir)*.dll" /target:exe /targetplatform:v4,C:\Windows\Microsoft.NET\Framework64\v4.0.30319 /wildcards
rem Remove all subassemblies.
del *.dll
rem Remove all .pdb files (except the new, combined pdb we just created).
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).all.pdb.temp"
del *.pdb
ren "$(TargetDir)$(TargetName).all.pdb.temp" "$(TargetName).all.pdb"
rem Delete the original, non-combined .exe.
del "$(TargetDir)$(TargetName).exe"
rem Rename the combined .exe and .pdb to the original project name we started with.
ren "$(TargetDir)$(TargetName).all.pdb" "$(TargetName).pdb"
ren "$(TargetDir)$(TargetName).all.exe" "$(TargetName).exe"
exit 0

c#

.net

deployment

ilmerge

2022-07-22T02:58:29+00:00