1

現在、ASP.NET MVC を使用して Umbraco Web サイトを開発しています。Web サイトには、EntityFramework 5 を使用して CMS のデータベースとは異なるデータベースに接続する別のコンポーネントへの参照もあります。(両方のデータベースは MySQL です)。

NuGet を使用して依存関係を管理しています。これらは(特に)私が持っている現在のパッケージとその依存関係です:

データコンポーネント

   -> MySQL.Data.Entities 6.7.4
      -> MySql.Data 6.7.4 (dependency for at least 6.7.4)

ウェブ

Umbraco core
    -> MySql.Data 6.6.5 (exact version)

問題は、Web コンポーネントがデータ コンポーネントへの参照を持っているため、MySQL.Data への参照が競合することです。

  • Umbraco コアがその特定のバージョンに依存しているため、Web コンポーネントの MySql.Data を更新できません
  • MySQL.Data.Entities コンポーネントの 6.6.5 バージョンにエラーがあるため、datacomponent パッケージをダウングレードできません。

私がやろうとしたことは、ビンの外側のフォルダーへのいくつかのバインディングリダイレクトでした:

<dependentAssembly>
   <assemblyIdentity name="MySql.Data" publicKeyToken="c5687fc88969c44d" culture="neutral" />
   <bindingRedirect oldVersion="0.0.0.0-6.6.5.0" newVersion="6.6.5.0" />
   <codeBase version="6.7.4.0" href="Assembly/6.7.4/MySql.Data.dll"/>
   <codeBase version="6.6.5.0" href="Assembly/6.6.5/MySql.Data.dll"/>
</dependentAssembly>

ここでの問題は、AssemblyBinder が最初に bin ディレクトリ内を検索し、6.6.5 バージョンの DLL があるため、マニフェスト定義がアセンブリと一致しないことです。パッケージをNuGetパッケージとして使用したいので、bin-folderにあります。

私が考えることができる唯一のことは、Umbraco パッケージを完全に削除して手動で解決することです。そうすれば、ビンに DLL が存在せず、AssemblyBinder は正しいフォルダーを検索する必要があります。CIサーバーと他の開発者PCでパッケージを正しくセットアップする必要があるため、これを行いたくありません。また、パッケージには、自動的に解決したい他の多くの依存関係があります。

誰かが別の解決策を知っていますか?

4

1 に答える 1