2010-08-13 18 views
1

ILMerge fusionne généralement bien mes assemblages lors de la construction d'une version, mais lors de la publication pour ClickOnce, l'EXE résultant ne contient pas les DLL qui devaient être fusionnées.Pourquoi ILMerge ne fait rien lors de la publication?

Je pense que ILMerge fonctionne, mais Publish remplace le nouvel assemblage fusionné par l'ancien original. J'ai créé un événement Post-Build qui a arrêté la construction juste après l'exécution d'ilmerge, et il a été fusionné comme prévu. Pourquoi cela se produit-il, et y a-t-il une solution de contournement?

Répondre

0

Apparemment, une fois le projet généré et le script post-build exécuté, Publish recopie les fichiers de sortie du répertoire obj dans le répertoire bin (probablement parce qu'il a modifié le fichier manifeste). Au moins dans Visual Studio 2010.

Je fixe en ajoutant à mon script de post-construction après la ligne de ILMerge:

ECHO assemblage de copie du bac Retour au répertoire obj: COPIE « $ (TargetFileName) » " .... \ obj \ $ (NomConfiguration) " COPY" $ (TargetFileName) "" .... \ obj \ $ (ConfigurationName) "

Il copie le fichier dans le répertoire obj afin que Publish puisse faire sa chose avec les bons fichiers.

0

ClickOnce effectue une génération avant de publier. Si vous souhaitez modifier quelque chose au sujet de votre déploiement, vous devrez assembler les fichiers manuellement et modifier le manifeste de déploiement (fichier .application) et le manifeste de l'application (fichier yourapp.exe.manifest) avec MageUI, puis re-signer les fichiers.

+0

Dans le cas où quelqu'un a besoin d'aller dans cette voie ma question et la réponse ici explique le processus en détail http://stackoverflow.com/questions/25004056/resign-clickonce-manifest-using-mage-exe –