Как запретить Entity Framework 6 создавать bindingRedirect в файле конфигурации

#c# #entity-framework-6

#c# #entity-framework-6

Вопрос:

При компиляции проекта, который ссылается на Entity Framework 6, он незаметно вставит следующую привязку к сборке в выходной файл конфигурации:

 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="EntityFramework" publicKeyToken="b77a5c561934e089" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
  </dependentAssembly>
</assemblyBinding>
  

Есть ли какой-нибудь способ отключить это? Пожалуйста, обратите внимание, что раздел вставляется в выходной конфигурационный файл после компиляции, а не в копию разработчика. В результате это перезапишет мою предполагаемую привязку к сборке для entity framework.

На самом деле я хочу это сделать, потому что проект зависит как от EF5, так и от EF6.

 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="entityFramework" publicKeyToken="b77a5c561934e089" />
            <codeBase version="5.0.0.0" href="LegacyEntityFramework.dll" />
        </dependentAssembly>
    </assemblyBinding>
  

Спасибо!

Ответ №1:

Вы не можете использовать EF5 и EF6 в одном проекте

Вы должны обновить все свои зависимости до EF6

Ответ №2:

Оказывается, это вызвано не EntityFramework, а Visual Studio. Когда Visual Studio обнаруживает, что ссылаются на несколько версий одной и той же сборки, она автоматически создает перенаправления привязки сборки.

Но это можно отключить, отредактировав тег AutoGenerateBindingRedirects файла проекта.

Как: Включить и отключить автоматическое перенаправление привязки