2013-08-02 4 views
1

В настоящее время я разрабатываю веб-сайт Umbraco с использованием ASP.NET MVC. На веб-сайте также есть ссылка на другой компонент, который использует 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) 

Web

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

Проблема теперь, что веб-компонент имеет ссылку на компонент данных и, следовательно, ссылки на MySQL.Data conflict:

  • Я не могу обновить MySql.Data in th e, потому что ядро ​​Umbraco имеет зависимость от этой конкретной версии.
  • Я не могу отказаться от пакета datacomponent, потому что есть ошибка с 6.6.5 версией компонента MySQL.Data.Entities.

То, что я пытался сделать, некоторые некоторые bindingRedirects в папку за пределами бункера:

<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 выглядит внутри бен-каталог первой, и есть 6.6. 5-версия DLL, следовательно, это явное определение не соответствует сборке. Он находится в папке bin, потому что я все еще хочу, чтобы пакет был пакетом NuGet.

Единственное, что я могу придумать, это полностью удалить пакет Umbraco и решить его вручную. Таким образом, в бункере не будет библиотеки DLL, и AssemblyBinder должен будет выглядеть в правильной папке. Я не хочу этого делать, потому что мне нужно правильно настроить пакет на нашем CI-сервере и на других компьютерах разработчиков. Кроме того, в пакете есть много других зависимостей, которые я хотел бы решить автоматически.

Кто-нибудь знает о другом решении?

ответ

1

Я не могу проверить это, но у вас были подобные проблемы. В тех случаях, я написал что-то вроде этого

<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.6.5.0" href="bin\Assembly\6.6.5\MySql.Data.dll"/> 
    <codeBase version="6.7.4.0" href="bin\MySql.Data.dll"/> 
</dependentAssembly> 

Самая большая разница из файла является то, что у меня есть MySQL по умолчанию в папке бин, так как он взял с отражением.