我目前正在開發一個使用ASP.NET MVC的Umbraco網站。該網站還提供了另一個使用EntityFramework 5連接到不同於CMS的數據庫的組件。 (這兩個數據庫都是MySQL)。NuGet依賴和多個DLL版本
我正在使用NuGet來管理我的依賴關係。這些是(等等)當前包我已經和他們的依賴:
DataComponent
-> 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衝突:
- 我無法更新MySql.Data e web組件,因爲Umbraco核心依賴於該特定版本
- 我無法降級datacomponent包,因爲6.6.5版本的MySQL.Data.Entities組件存在錯誤。
我試圖做的是一些一些bindingRedirects到一個文件夾中bin之外:
<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,因此它的清單定義與程序集不匹配。它位於bin文件夾中,因爲我仍然希望該包作爲NuGet包。
我唯一能想到的就是徹底刪除Umbraco包並手動解決它。這樣就不會有bin中的DLL,並且AssemblyBinder必須查找正確的文件夾。我不想這樣做,因爲我需要在CI服務器和其他開發人員PC上正確安裝軟件包。另外,該軟件包還有許多其他的依賴項,我想自動解決。
有誰知道不同的解決方案?