5

Newtonsoft.Json を更新した後、アセンブリの競合が発生しています。エラーで参照されている特定のバージョンがどこから来ているのか理解できません。特定のバージョンを指す web.config には何もありません。

System.IO.FileLoadException: ファイルまたはアセンブリ 'Newtonsoft.Json, Version=3.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)

アセンブリの 2 つのバージョンを GAC 化すると、問題は解決しますか?

4

2 に答える 2

17

@jammykam が marto の回答でコメントしたように、アセンブリをリダイレクトできます。過去に Newtonsoft と Sitecore でこれを問題なく実行しました。私のSitecore コンテンツ アズ サービス コードを参照してください。

特に web.config ファイルの次の行に関心があります: https://github.com/HedgehogDevelopment/sitecore-content-service/blob/master/Sitecore/Web/Web.config#L3499

<dependentAssembly>
    <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.5.0.0" />
</dependentAssembly>
于 2013-01-03T14:11:41.850 に答える
3

それらをGACすることは機能するかもしれませんが、それはメンテナンスの悪夢を生み出します。しないでください!

2つの選択肢があると思います。

  1. 実行しているSitecoreのバージョンに応じて、Sitecoreに付属のバージョンを使用してください。
  2. 1つのsitecoreバージョンはそのままにして、ilmergeを使用して必要なNewtonsoft.Jsonバージョンを独自のアセンブリと組み合わせます。

(ダイナミクス...など)のようなライブラリの最新機能が必要ない場合は、1をお勧めします。

于 2012-12-14T14:04:12.483 に答える