18

MEFとRavenBDを使用したasp.netMVC4プロジェクトがあります。

プロジェクトがロードされると、次の例外がスローされます:ファイルまたはアセンブリをロードできませんでしたAntlr3.Runtime.dll

RavenDBとWebGrease(MVC 4と共にインストール)の両方がAntlr3を使用していることがわかりました。ただし、WebGreaseには、Microsoftによって署名された独自のAntlr3dllが付属しています-PublicKeyToken31bf3856ad364e35

Antlr3のデフォルトのPublicKeyTokenはeb42632606e9261fです。

RavenDBとWebGreaseは、同じバージョンのAntlr33.3.1.7705を使用します

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

7

残念ながら、同じバージョンの異なる署名を持つ依存関係の競合に対する解決策は見つかりませんでした。

しかし、幸いなことに、WebGreaseの寄稿者の1人であるHoward Dierkingが、私の懸念に電子メールで回答してくれました。彼の回答は次のとおりです。

こんにちはマキシム–これに遭遇して申し訳ありません。私は問題を迅速に解決するためにいくつかのことをするように取り組んでいます:

1)最新のantlrバージョンを使用したantlrパッケージの更新の準備–テストしてnuget.orgにプッシュします

2)WebGreaseチームと協力してNuGetパッケージを変更し、antlr.dllを出荷せず、パッケージの依存関係を取得します。彼らと話しているとき、彼らはパッケージが存在することに気づいていませんでした。

これにより、発生したdll地獄の問題が解決するはずです。うまくいけば、これは休日で数週間以上かかることはありません。

ありがとう、

_howard

于 2012-11-15T23:30:40.703 に答える
1

同じ問題が発生し、コンピューターからすべてのプロジェクトを削除し、サーバーから最新バージョンを取得し、プロジェクトの読み込み後にすべてのnuget依存関係を再構築することで解決しました。あなたはこれを試すことができます、それは私のために働きました。

一部のnuget依存関係は、アンインストール後にゴミを残すようです。これが、すべてのソリューションをクリーンに再構築する唯一の方法です。

于 2014-04-22T10:26:41.130 に答える
1

私は他の答えを試しました。また、WebGreaseパッケージとAntlrパッケージの復元、アップグレード、ダウングレード、再インストールの多くの組み合わせを試しました。実行時に、置き換えられた古いAntlrのバージョン番号(3.4.1.9004)を表示するLoaderExceptionsでReflectionTypeLoadExceptionがスローされていました。

また、次のことも試しましたが、テストに数日かかりましたが、いずれも問題を解決しませんでした。

  • 一時ファイルをクリアします。
  • VisualStudioとソリューションの再読み込み。
  • 開発用コンピューターを再起動します。
  • 参照の「特定のバージョン」フラグを削除します。

最終的に機能したのは、web.configファイルにバインディングリダイレクトを追加することでした。古いバージョンのWebGreaseもNuGetによって更新されていないため、両方を次のように置き換えました。

</runtime>
    </assemblyBinding>
        <dependentAssembly>
            <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
        </dependentAssembly>
        <dependentAssembly>
            <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

私のアプリケーションを再コンパイルしてデプロイした後、それは苦情を取り除きました。

于 2021-09-28T18:11:14.757 に答える