現在、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でパッケージを正しくセットアップする必要があるため、これを行いたくありません。また、パッケージには、自動的に解決したい他の多くの依存関係があります。
誰かが別の解決策を知っていますか?