問題タブ [assemblybinding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
101 参照

visual-studio - 異なるバージョンのアセンブリ間の競合: Windows では動作するが Mac では動作しない

Xamarin Android プロジェクトをビルドしようとしています。プロジェクトは Windows 上の Visual Studio で完全にビルドされますが、まったく同じコード ベースを取得してVisual Studio for Mac でコンパイルしようとすると、以下のエラーが発生し続けます。

Windows 上の Visual Studio は、バインディング リダイレクトを自動的に行う必要があります。

現在、NuGet を介し3.2.0.0てインストールされているバージョンがあり、これが必要なバージョンです。Compare-NET-Objectsコードベース全体を検索した後でもバージョン3.8.0.0が必要ですが、それはどのファイルのどこにも存在しません。

packages.configのエントリは次のとおりです。

また、app.config でバージョン 3.02.0.0 を使用するために、バージョン 0.0.0.0-4.52.0.0 のアセンブリ バインディング リダイレクトを追加しようとしました、どちらも役に立ちませんでした。

私の他のパッケージやプロジェクトはしばらく更新されていませんが、targetFramework="monoandroid60" がpackages.configのターゲットフレームワークの値であったことに気付き、その値に戻しても役に立ちませんでした。

0 投票する
1 に答える
302 参照

json.net - NewtonSoft.Json の競合するバージョン要件の解決

アセンブリ バインドの問題に関するいくつかの投稿を読み、提案された解決策の多くを試しましたが、すべてうまくいきませんでした。

私は比較的古い asp.net Web フォーム Web サイトを持っています。これは、NewtonSoft.Json に依存する .Net Framework 4.6 Analytics アセンブリに依存します。その Analytics アセンブリは私たち自身のものであり、NewtonSoft.Json v7.0.1 で構築されました。これは、Web サイトの bin フォルダーにあるアセンブリのバージョンです。

.Net Framework WebApi サービスに依存する新しい Web サイト、Angular SPA があります。サービスは、別のロギング サービスを呼び出すロギング ヘルパー コンポーネントに依存しています。ログ ヘルパー コンポーネントは Microsoft.AspNet.WebApi.Client に依存してサービス呼び出しを行います。これは、NewtonSoft.Json v6.0.4 に依存する System.Net.Http.Formatting に依存します。

Web サイトで新しいロギング ヘルパー コンポーネントを使用しようとすると、実行時にロギングが失敗し、NewtonSoft.Json の v6.0.0.0 またはその依存関係の 1 つを読み込めません。

v7.0 ファイルを Web サイトの bin フォルダーにドロップすると、Analytics アセンブリが NewtonSoft.Json の v7.0.0.0 またはその依存関係の 1 つを読み込めないため、Web サイトが失敗します。

理想的には、Microsoft.AspNet.WebApi.Client と System.Net.Http.Formatting を新しいバージョンの NewtonSoft.Json とうまく連携させたいと考えていますが、これらのアセンブリがどのように機能するかについてはあまり制御できません。Analytics コンポーネントを NewtonSoft.Json v6.0.4 で再構築しようとしましたが、ビルドしてデプロイすると、Web サーバーで何らかの形で v7.0.0.0 を探してしまいます。

岩と固いところの間に挟まっているような気がします。Analytics または Logging のいずれかを機能させることができますが、両方を機能させることはできません。a) ソリューションのためにどの方向を追求するかについての提案はありますか?Analytics コンポーネントが古いバージョンを受け入れるようにするか、Logging コンポーネントが新しいバージョンで動作するようにするか、b) これらのアプローチのいずれかを達成する方法はありますか?

更新 1 - 上記以外に試したことのいくつか: ロギング ヘルパー コンポーネントの .csproj プロジェクト ファイルで、NewtonSoft.Json 参照からバージョン情報を削除しようとしました。NewtonSoft.Json v7.0 ファイルを使用して Web サイトにデプロイしましたが、v6.0 を読み込めないと言って失敗しました。Assembly Binding Log Viewer fuslogvw.exe を使ってみました。正しく使用していなかったのかもしれませんが、アセンブリ バインディング エラーを再現でき、Assembly Binding Log Viewer には何も表示されませんでした。

更新 2 - ロギング ヘルパー コンポーネントにアセンブリ バインディング リダイレクトを追加して 6.0.0.0 から 7.0.0.0 にリダイレクトしようとしましたが、コンポーネントをビルドして Web サイトの bin フォルダーにドロップすると、NewtonSoft.Json 7.0 が追加されました。 v6.0.0.0 をロードできると言って、ロガーはまだ失敗します。ここから抜け出す方法はありませんか?

更新 3 - 以下は、ログ ヘルパー コンポーネントの packages.config です。packages.config のすべては、Microsoft.AspNet.WebApi.Client パッケージの追加に基づいていると思います。NuGet のパッケージ情報によると、NewtonSoft.Json >= 6.0.4 で動作するはずですが、常に 6.0.0.0 の検索に失敗します。