2009-08-21 7 views
2

Benutzer können keine ClickOnce-Anwendung installieren. Der Fehler lautet: "Datei NLog.dll ist keine gültige Portable Executable (PE) -Datei." Es funktioniert gut auf meinem Rechner, aber ich habe nLog installiert. Das ist für Client-Rechner nicht möglich. Irgendwelche Ideen wie man das zum Laufen bringt?Bereitstellen von NLog mit einer ClickOnce-Anwendung

Antwort

2

Wenn Ihre NLOG-Assemblys im GAC bereitgestellt werden, können Sie dies (einfach) nicht in ein ClickOnce-Setup aufnehmen. Versuchen Sie, sie als lokale DLLs bereitzustellen. Wenn dies nicht möglich ist, benötigen Sie ein separates Setup (oder MSI) zum Bereitstellen von NLog.

+0

Um die Antwort von Henk weiterzuleiten, sollte die nlog-Installation eine nicht-GACed-DLL irgendwo enthalten haben, die Sie verwenden können, oder Sie können eine von ihrer Site herunterladen (oft in einer Zip-Datei anstelle des Installers). –

+1

Wir verwenden NLog auch hier ohne (zu viele) Probleme, aber unsere DLLs werden lokal mit der Anwendung bereitgestellt. – Newtopian

3

Überprüfen Sie Ihre Build-Option und stellen Sie sicher, NLog.dll ist in den "Anwendungsdateien" enthalten, so dass es in "Download-Gruppe"/erforderlich ist.

+0

Dies ist wahrscheinlich das Problem, da NLog nur eine andere DLL sein sollte, die Sie einschließen können. Log4Net funktioniert auf diese Weise. –

+0

Danke, aber die DLL wird heruntergeladen, es gibt nur einen Fehler. – Brian

0

Fügen Sie die DLL Ihrem Projekt hinzu und legen Sie BuildAction = None fest und "Kopieren in Ausgabeverzeichnis" als "nicht kopieren".

Löschen Sie Ihren Verweis auf NLog in Ihrem Projekt. Fügen Sie die Referenz erneut hinzu und zeigen Sie sie auf die DLL, die Sie gerade zum Projekt hinzugefügt haben. Setzen Sie für die Eigenschaften der Referenz "Copy local" auf "true".

Wenn Sie nun die Anwendung ausführen, wird auf die lokale Version verwiesen. Wenn Sie die Anwendung bereitstellen, wird die lokale Version bereitgestellt und auf sie verwiesen.

Dies funktioniert für viele DLLs von Drittanbietern, aber nicht alle. Das Beste ist, es auszuprobieren.

+0

Danke, aber die DLL wird heruntergeladen, es gibt nur einen Fehler. – Brian

+0

Wie wird in Ihrem Projekt darauf verwiesen? Ich werde mein Gedächtnis ausgraben müssen, ich erinnere mich an etwas über den tragbaren Ausführungsfehler ... Sie haben Ihr Projekt geändert, um es so zu referenzieren, wie ich es hier gesagt habe? – RobinDotNet

+0

Hier ist ein Beitrag aus dem MSDN-Forum - sehen Sie, ob Ihnen das überhaupt hilft: http://social.msdn.microsoft.com/forums/en-US/winformssetup/thread/dc47dac1-6eb2-4533-a119-c1d87a36c4a5/ – RobinDotNet

7

Ich habe alle NLOG-Konfigurationsdaten in die App.config-Datei anstelle der NLOG.config-Datei und es funktionierte für mich nach der Bereitstellung mit ClickOnce auch. Keine Fehler und die Protokollierung funktionierte für die bereitgestellte Anwendung.

+0

Funktioniert auch für mich. – Pat

8

Ich habe die Antwort auf dieses Problem gefunden, wenn Ihr NLog.config nicht in Ihr Programm kopiert wird, wenn es mit ClickOnce installiert wird.

Sie benötigen die NLog.config Datei in Ihrem Project mit Solution Explorer wählen und setzen Sie den Properties wie folgt:

  • Build Action: Content
  • kopieren Ausgabeverzeichnis: Kopieren immer

Wenn Sie jetzt mit ClickOnce bereitstellen, sollten die Dateien b Auch kopiert! :)