2017-07-25 1 views
-1

Ich versuche, Json.net in C# zu verwenden, um eine JSON-Datei zu schreiben. Wenn ich den Code erstelle, baut er gut und erstellt eine parser.exe fein. aber wenn ich versuche, dass parser.exe auf einem separaten Server laufen zu lassen, wo er laufen muss es gibt mir einen FehlerDatei oder Baugruppe konnte nicht geladen werden Newtonsoft.Json

System.IO.FileNotFoudException: Could not load file or assembly 
'Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4f...' 
or one of its dependencies. The system cannot file the file specified. 

Muss ich Newtonsoft dll auf dem Server es braucht, um zu laufen kopieren müssen. Jede Hilfe wird sehr geschätzt.

+0

Ja .. Sie müssen alle abhängigen Assembly kopieren Lügen, Bibliotheken und DLLs zum Zielort, von wo aus du die exe startest. –

+0

Welche Art von IDE verwenden Sie? – EasyE

+0

Ich verwende eine Visual Studio Community Edition 2015 – jarus

Antwort

0

Es gibt wahrscheinlich einen Unterschied in der Version. Eine Abhängigkeitsmontage erfordert 10.0.0.0, Sie haben jedoch auf eine andere Version verwiesen. Fügen Sie diese auf Ihre Anwendung config:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" /> 
      <bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

genannten Versionen sind nur ein Beispiel

Auch stellen Sie sicher, dass die Einstellungen des Referenz sind wie folgt: enter image description here

+0

Visual Studios fügen die Schlüssel zur Konfigurationsdatei hinzu, wenn sie über nuget installiert werden. – EasyE

+0

Das ist wahr, aber nicht ohne nuget –

+0

Hallo @Kees de Wit ist die Visual Studio auf dem Server installiert werden müssen, wo sie die parser.exe laufen muss – jarus

2

Stellen Sie sicher, das referenzierte DLL wird festgelegt, um in den bin-Ordner bereitgestellt zu werden, indem Sie mit der rechten Maustaste auf den Verweis klicken, Eigenschaften und die Einstellung Copy Local bis True auswählen.

UPDATE:

Was passiert, ist, dass Sie die DLL lokal referenziert, aber wenn Sie Ihr Programm bereitstellen, wird es von der Zielmaschine fehlt.

Indem Sie den Verweis auf immer kopiert werden, wird Ihr bin-Ordner eine Kopie davon haben, so lange es Sie ordnungsgemäß bereitstellen (einschließlich der bin-Ordner), sollte es funktionieren.

+0

Wenn Sie etwas downvote, ist es üblich, mit freundlicher Genehmigung zumindest eine Nachricht hinterlassen zu erklären, warum oder in irgendeiner Weise dazu beiträgt, die Antwort zu verbessern. – JuanR

+1

Ich wurde selbst gewählt Ich weiß nicht warum? Smh – EasyE

1

Ja, Sie müssen den gesamten Debug- oder Release-Ordner kopieren, die sich im Bin-Ordner befinden. Ein Ratschlag stellt sicher, dass Sie Ihre Lösung neu erstellen, um alle kürzlich vorgenommenen Änderungen zu erhalten.

Beispiel

C: \ Folder \ Projects \ ConsoleAppTest \ ConsoleAppTest \ bin \ Release

-ODER-

C: \ Folder \ Projects \ ConsoleAppTest \ ConsoleAppTest \ bin \ Debug

+0

Sie denken, dass er wirklich alle Dateien zu kopieren vergessen zu? –

+0

@KeesdeWit Ja, ich bin sicher, dass er es tat, ich bin vertraut mit dem, was er zu tun versucht, speziell mit dieser Botschaft, die er empfängt. – EasyE

Verwandte Themen