2009-08-21 10 views
2

Les utilisateurs ne peuvent pas installer une application ClickOnce. L'erreur est: "Le fichier NLog.dll n'est pas un fichier Portable Executable (PE) valide." Cela fonctionne très bien sur ma machine, mais j'ai installé nLog. Ce n'est pas possible pour les machines client. Des idées pour que cela fonctionne?Déploiement de NLog avec une application ClickOnce

Répondre

2

Si vos assemblys NLog sont déployés dans le GAC, vous ne pouvez pas (simplement) l'inclure dans une installation ClickOnce. Essayez de les déployer en tant que DLL locales. Si cela n'est pas possible, vous aurez besoin d'une configuration séparée (ou MSI) pour déployer NLog.

+0

Pour compléter la réponse de Henk, l'installation de nlog devrait inclure une DLL non-GACed quelque part que vous pouvez utiliser, ou vous devriez pouvoir en télécharger une sur leur site (souvent dans un fichier zip plutôt que dans l'installeur). –

+1

Nous utilisons ici aussi NLog sans (trop) de problèmes mais nos dll sont déployés localement avec l'application. – Newtopian

3

Vérifiez votre option de compilation et assurez-vous que NLog.dll est inclus dans les "Fichiers d'application", de sorte qu'il sera dans "groupe de téléchargement"/requis.

+0

C'est probablement le problème puisque NLog devrait juste être une autre DLL que vous pouvez inclure. Log4Net fonctionne de cette façon. –

+0

Merci, mais la DLL est téléchargé, il donne juste une erreur. – Brian

0

Ajoutez la DLL à votre projet et définissez BuildAction = None, et "Copier dans le répertoire de sortie" comme "ne pas copier". Supprimez votre référence à NLog dans votre projet.

Re-ajoutez la référence et pointez-la sur la DLL que vous venez d'ajouter au projet. Sur les propriétés de la référence, définissez "Copier local" sur "true". Maintenant, lorsque vous exécutez l'application, elle pointera vers la version locale et, lorsque vous déploierez l'application, déploiera la version locale et pointera dessus.

Ceci fonctionne pour beaucoup de DLL tierces, mais pas toutes. La meilleure chose à faire est de l'essayer.

+0

Merci, mais la DLL est téléchargé, il donne juste une erreur. – Brian

+0

Comment est-il référencé dans votre projet? Je vais devoir draguer ma mémoire, je me souviens de quelque chose à propos de l'erreur d'exécution portable ... Vous avez changé votre projet pour y faire référence comme je l'ai dit ici? – RobinDotNet

+0

Voici un article du forum MSDN - voir si cela vous aide du tout: http://social.msdn.microsoft.com/forums/fr-FR/winformssetup/thread/dc47dac1-6eb2-4533-a119-c1d87a36c4a5/ – RobinDotNet

7

J'ai mis toutes les données de configuration NLog dans le fichier App.config au lieu du fichier NLog.config et cela a fonctionné pour moi après le déploiement avec ClickOnce. Aucune erreur et la journalisation fonctionnait sur l'application déployée.

+0

Fonctionne pour moi aussi. – Pat

8

J'ai trouvé la réponse à ce problème lorsque votre NLog.config ne serait pas copié dans votre programme s'il était installé en utilisant ClickOnce.

Vous devez sélectionner le fichier NLog.config dans votre Project en utilisant Solution Explorer et définir ses Properties comme suit:

  • Build Action: Contenu
  • Copier Output Directory: Copiez toujours

Maintenant, lorsque vous déployez en utilisant ClickOnce les fichiers doivent être b e copié aussi bien! :)

Questions connexes