Wir haben einen Dienst geschrieben, der in Azure implementiert werden soll. Diese besteht aus einer DLL mit einer "Worker Role" Klasse und einem Azure Cloud-Service-Projekt, wie unten dargestellt: Falsche Version von System.Runtime wird gepackt
Die Build-Schritte sind:
- die ccproj Bau in "Release" Konfiguration.
- Run NuGet "spec", dann "Pack", um eine Datei .nupkg
- Bereitstellen der .nupkg Datei in das Azure Cloud Service
Dies hat gearbeitet für eine Weile gut, bis wir ein Upgrade zu .NET 4.6.2 und aktualisiert mehrere andere Referenzen, einschließlich System.Runtime (jetzt v4.3.1). Nun, obwohl wir (unnötigerweise) einen NuGet-Verweis auf jedes einzelne-Projekt in der Lösung hinzugefügt haben und auf System.Runtime 4.3.1 verweisen, ist die Version von System.Runtime.dll, die bereitgestellt wird, eine ältere Version , was zu DLL-Fehlern auf dem Dienst führt, die dann nicht ausgeführt werden können. Wenn wir manuell die richtige Version von System.Runtime.dll kopieren, funktioniert alles wieder.
Woher kommt diese falsche Version von System.Runtime? Und wie überzeugen wir die anstößige Software/Hardware, um die richtige Version zu verwenden?
UPDATE: Trail wird wärmer. Auf meinem Entwicklungscomputer enthält der Ordner bin
des EventWorker-Projekts die richtige Version von System.Runtime.dll. Aber ... der Ordner EventProcessor\obj\debug\EventWorker
enthält die alte Version! Ich löschte den obj
Ordner und kompilierte das Projekt neu - und die alte Version der DLL wird erneut angezeigt.
Woher kommt es und wie wird es repariert?
Es gibt keine Konfliktmeldungen bei der Kompilierung, zur Laufzeit bei der Bereitstellung in Azure. Aber jetzt habe ich einige neue Informationen gefunden - siehe Update zu meiner Frage. –
Zu meinem letzten Punkt, gibt es einen Verweis darauf im Abschnitt Weiterleitungen Ihrer app.config im Worker? Wenn dies eine Version angibt, ist es egal, was Sie hinzufügen, und es funktioniert, da Sie die alte Version lokal haben. Deshalb funktioniert es nicht in der Cloud. –
'app.config' hat:' ' –