2017-09-20 12 views
-1

私はNewtonsoft.Json 6.0.8を必要とするWebプロジェクトを持っています。私はAuth0認証を行うためのソリューションにクラスライブラリを追加しており、Newtonsoft 9.0.1が必要です。両方のバージョンをロードし、メインWebプロジェクトで1つを使用し、クラスライブラリで別のバージョンを使用する方法はありますか? web.configの "dependentAssembly"セクションの "codebase"のような設定について読んでいるが、運がない。WebプロジェクトとクラスライブラリのDLLバージョンの問題。

+0

Newtonsoftのバージョン間の変更点を確認し、明確なアップグレードパスがあるかどうかを確認することをお勧めします。ジェームズは、各バージョンで何が変わったかを概説するブログを持っています。 http://james.newtonking.com/ –

+1

なぜ異なるバージョンを使用しようとしていますか?すべてのプロジェクトを最新のものにアップグレードするだけです。 – ahmet

+0

購入したサードパーティのソフトウェアに接続し、カスタム認証をコードベースに追加しようとしています。私たちがコードを管理していれば、それは問題ではありません。 – atomantium

答えて

0

はい、できますが、本当にすべきではありません - すべての依存関係を同じバージョンのNewtonsoft.Jsonを受け入れるようにするのが最良の方法です(同じバージョンへの必要なリンクではなく、依存関係の範囲を許可します)。 1つのバージョンにアセンブリバインディングリダイレクトをロードして、すべての古いバージョンを最新のものに転送します。

"Update-Package -IgnoreDependencies"(https://docs.microsoft.com/en-us/nuget/tools/ps-ref-update-package)を使用して、その依存関係の制限を無視して試してみてください(成功する可能性があります)。

そのDLLの混合バージョンを使用する必要がある場合(コードにJxxxxオブジェクトを渡すことはなく、シリアライゼーション/デシリアライズの結果として厳密に型指定されたオブジェクトのみを使用することを確かめてください)、そのDLLの古いバージョンを別々に保存できますBINの横の他のフォルダにコピーします。 Assembly.Loadより古いバージョンに依存するコードを実行する前に特定のバージョンをロードする必要があります(Newtonsoft.Json dllが署名されているため、複数のバージョンが同じプロセスで共存できます)。

関連する問題