2013-08-28 13 views
6

私は次のエラーでクラッシュだVB.NETのアプリケーションを持っている:展開Microsoft.Bcl.Asyncワット/ 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'

私はMicrosoft.Bcl.Asyncライブラリを使用しようとしています。実際にAsync/Await呼び出しを使用するプロジェクトとそれを参照するプロジェクトにNuget経由でインストールしました。私のコンピュータではすべてが完璧に動作しますが、別のコンピュータで公開してテストすると、Async/Awaitを使用している部分を使用しようとするとプログラムがクラッシュします。

System.Threading.Tasksは、Copy Localがtrueに設定された両方のプロジェクトで参照されます。 Microsoft.Threading.Tasksは、Copy Localがtrueに設定された両方のプロジェクトで参照されます。私はこれについてthe other threadを見てきました。それは関連するプロジェクトにインストールされています。これらは私のapp.configファイルに含まれている行です:

<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> 

私はこれを設定することで何が欠けていますか?詳細が必要な場合はお知らせください。ありがとうございました!あなたはnugetパッケージを追加するときに追加されている2つの以上の依存関係です

+0

C#にも該当します。 – tiwahu

答えて

1

をクリックして、一度だけ3メインDLLのMicrosoft.Threading.Tasks.dllMicrosoft.Threading.Tasks.Extensions.dll、およびMicrosoft.Threading.Tasks.Extensions.Desktop.dll

enter image description here

が含まれますが、いくつかのより多くのDLLのがあります配布可能なファイルに含まれていないSystem.Runtime.dllSystem.Threading.Tasks.dllこれらの2つのRefrencesのPathプロパティは、通常の場所ではなくプロジェクトの内部にあることがわかります。

enter image description here

私はそれを修正するかどうかは全くわからないが、少なくとも今は問題が何であるかを知っています。

+0

参照の私のリストに 'System.Runtime.dll'と' System.Threading.Tasks.dll'があります。 「正常」でない場所とは何ですか? – Cuthbert

+0

通常の場所は 'C:¥Program Files(x86)¥Reference Assemblies¥Microsoft¥Framework¥.NETFramework¥v4.0¥ 'です.NuGetパッケージはそれらの2つのアセンブリをローカルコピーで置き換える必要があります。それらの特別なDLLを使用します。 –

9

私はプロジェクトサイトに掲載の回避策を見つけました:

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

解像度

ClickOnceのは、特定の必要なアセンブリを展開するために失敗したため、これが発生しました。

Microsoft.Bclのnet40パッケージフォルダ

3.Inファイル名に既存の項目

2.Browseを追加プロジェクトに1.Rightクリックして選択します。回避策として、次の操作を行いますテキストボックスにと入力します。

4.Holding CTRL、

6リンクとして追加System.Runtime.dllとSystem.Threading.Tasks.dll

5.Click追加]ボタンの横にある下矢印を選択し、選択.INソリューションエクスプローラでは、CTRLはSystem.Runtime.dllとSystem.Threading.Taks.dll

を選択保持

7.Rightクリックし、[プロパティ]を選択し、選択をして

8常にコピーする出力ディレクトリにコピー]を変更します。再発行