Pour Les Applications De La Console
Voici la base "Post Chaîne de Build" pour Visual Studio 2010 SP1, en utilisant .NET 4.0. Je suis
la construction d'une console .exe avec tous les sub-.dll les fichiers inclus.
"$(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
Conseils basiques
- La sortie est un fichier "
AssemblyName.all.exe
" qui regroupe l'ensemble des sous-dll dans un .exe.
- Notez le "ILMerge\". Vous devez copier le ILMerge utilitaire dans votre solution de répertoire (de sorte que vous pouvez distribuer le code source sans avoir à vous soucier de documentation de l'installation de ILMerge), ou de modifier ce chemin d'accès de l'endroit où se ILMerge.exe réside.
Avancée de conseils:
Si vous avez des problèmes avec elle, pas de travail, activez l'option "Sortie", et sélectionnez "Afficher la sortie de: Construire". Vérifiez que la commande exacte que Visual Studio réellement produit, et voir s'il y avait des erreurs.
Mise à jour
Ce script remplace tous .exe + .les fichiers dll avec un seul combiné .exe. Elle conserve également le débogage .fichier pdb intacte.
Pour l'utiliser, collez-le dans votre "Post-construction" de l'étape, en vertu de la "génération des Événements" onglet dans un projet C#, et assurez-vous d'ajuster le chemin d'accès à la première ligne de point à l' 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