2016-09-06 10 views
1

誰かが助けてくれることを願っています。System.Runtimeアセンブリが.net標準クラスライブラリを参照するときに見つかりません

私は最近、私の会社のフロントエンドプロジェクトが新しいモバイルプロジェクト(Xamarin)と通信レイヤーを共有できるようにするために、.Netスタンダード1.3 PCLに変換されたプロジェクトのコレクションを持っています。

これらの新しいPCLがWPFプロジェクトで参照されると、すべて正常に動作しますが、ASP.netプロジェクトでそれらを参照すると実行時例外が発生します。 Runtime Exception

これは、System.Runtime.dllがビルド中にプロジェクトのbinフォルダに出力されなかったためです。

私はSystem.Runtime Nugetパッケージをプロジェクトで直接参照しようとしましたが、何もありませんでした。 いくつかの調査/ハッキングの後、私はNugetパッケージから(正しい)System.Runtime.dllをコピーし、手作業でビンに貼り付けるとすべてが読み込まれることがわかりました。

それで、不足しているDLLを見つけてそれをビンにコピーしたポストビルドイベントを作成しましたが、dllは引き続き展開パッケージから除外されています。

私の依存関係の残りの部分のようにビルド中に必要なDLLをbinディレクトリに出力するにはどうしてですか?

私は.Netスタンダードのドキュメントを読んでこの問題をGoogleで調査しましたが、助けになったものは何も見つかりませんでした。

答えて

1

私はまったく同じ問題を抱えている - 私はSystem.Runtime.DLLSystem.Runtime.Extensions.DLLbinディレクトリに存在しないというのが私の悔しさへの多くを実現するために、設定ファイルとNuGetパッケージをいじくり回すしようとして約5時間を無駄にしました。

私は突破口があれば書き返します。

- EDIT:これが役立つかどうかはわかりませんが、私は正方形から始め、PCLプロジェクトを再作成してからソリューションに再追加することにしました。 PCLをnetstandard1.3に設定しました。ここではPCLのための私のproject.jsonです:これをやって、その後、IDEを介して基準を追加した後

{ 
    "name": "<redacted>", 
    "version": "1.0.0-*", 
    "supports": { 
    "net46.app": {} 
    }, 
    "dependencies": { 
    "Microsoft.NETCore.Portable.Compatibility": "1.0.1", 
    "NETStandard.Library": "1.6.0", 
    "Newtonsoft.Json": "9.0.1" 
    }, 
    "frameworks": { 
    "netstandard1.3": { 
     "imports": "portable-net46+win8" 
    } 
    } 
} 

を、私はもはや組立誤差を得ることはありません。私はこのPCLを.NET Core 1.0アプリケーションにリンクすることもできます。

これが役に立ちます。

+0

PS。私はこのツールが非常に役に立つことを発見しました。失敗したアセンブリバインディングだけを見てから、ローダーが処理しようとしているパスの正確なリストを確認することができます。[link](http://www.hanselman.com/blog/BackToBasicsUsingFusionLogViewerToDebugObscureLoaderErrors.aspx) – Rimmel

関連する問題