2013-08-28 21 views
6

Ich habe eine VB.NET-Anwendung, die mit dem folgenden Fehler Absturz ist:Bereitstellen von Microsoft.Bcl.Async w/Clickonce

System.IO.FileNotFoundException: Could not load file or assembly 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. File name: 'System.Threading.Tasks, Version=2.5.19.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

Ich versuche, die Microsoft.Bcl.Async Bibliothek zu verwenden. Ich habe es über Nuget auf dem Projekt installiert, das tatsächlich Async/Await-Aufrufe verwendet und das Projekt, das darauf verweist. Alles funktioniert perfekt auf meinem Computer, aber wenn ich auf einem anderen Computer veröffentliche und teste, stürzt mein Programm ab, wenn ich versuche, den Teil davon zu verwenden, der Async/Await verwendet.

Auf System.Threading.Tasks wird in beiden Projekten mit Local Copy auf true verwiesen. Microsoft.Threading.Tasks wird in beiden Projekten mit Local Copy auf True verwiesen. Ich habe the other thread darüber gesehen und es ist in den relevanten Projekten installiert. Dies sind die Zeilen in meiner app.config-Datei:

<dependentAssembly> 
    <assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" /> 
    </dependentAssembly> 
    <dependentAssembly> 
    <assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.5.19.0" newVersion="2.5.19.0" /> 
    </dependentAssembly> 

Was fehlt mir bei der Einrichtung dieser? Bitte lassen Sie mich wissen, wenn Sie weitere Informationen benötigen. Vielen Dank!

+0

Gilt auch für C#. – tiwahu

Antwort

1

Klicken Sie einmal gehören nur drei Haupt-DLL Microsoft.Threading.Tasks.dll, Microsoft.Threading.Tasks.Extensions.dll und Microsoft.Threading.Tasks.Extensions.Desktop.dll

enter image description here

Allerdings gibt etwas mehr DLL sind, die zwei weitere Abhängigkeiten, die hinzugefügt werden, wenn Sie die nuget Paket hinzufügen, das sind nicht enthalten in den verteilbaren System.Runtime.dll und System.Threading.Tasks.dll Sie können sehen, dass die Path Eigenschaft für diese zwei refrences innerhalb Ihres Projekts sind, nicht an der normalen Position.

enter image description here

Ich bin nicht ganz sicher, wie es zu beheben, aber zumindest jetzt wissen Sie, was das Problem ist.

+0

Ich sehe 'System.Runtime.dll' und' System.Threading.Tasks.dll' in meiner Referenzliste. Was ist der "normale" Standort gegenüber dem "nicht normalen" Standort? – Cuthbert

+0

Der normale Speicherort wäre 'C: \ Programme (x86) \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0 \ 'Das NuGet-Paket muss diese beiden Assemblies durch seine lokale Kopie ersetzen, und das ist der Grund verwendet diese speziellen DLLs. –

9

fand ich eine Abhilfe auf der Website des Projekts veröffentlicht:

http://blogs.msdn.com/b/bclteam/p/asynctargetingpackkb.aspx

Resolution

Dies geschieht, weil Clickonce bestimmten erforderlichen Baugruppen installiert werden kann. Als Abhilfe können Sie wie folgt vor: auf dem Projekt

1.Right Maustaste und wählen Vorhandenes Element hinzufügen

2.Gehen zum Microsoft.Bcl net40 Paketordner

3.In der Dateiname Textfeld eingeben .

4.Holding CTRL, wählen System.Runtime.dll und System.Threading.Tasks.dll

5.Click die Abwärtspfeil neben der Schaltfläche Hinzufügen und wählen Sie Hinzufügen als Link-

6 .In Mappen-Explorer halten CTRL wählen System.Runtime.dll und System.Threading.Taks.dll

7.Right Sie auf die Auswahl, wählen Sie Eigenschaften und Copy Directory Output ändern immer

8 zu kopieren.Neuveröffentlichen