Не удается загрузить EntityFramework.dll 5.0.0.0 внутри расширения Visual Studio 2013

Я пишу расширение Visual Studio, которое зависит от EntityFramework 5.0.0.0. Я включил EntityFramework в свой проект. Когда я устанавливаю свое расширение, DLL моего расширения появляется в папке VS extensions, и вместе с ним появляется EntityFramework.dll.

Однако когда я запускаю свое расширение в Visual Studio 2013 (обновление 5), оно не может загрузить EntityFramework: System.IO.FileNotFoundException: Could not load file or assembly 'EntityFramework, Version=5.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.

Посмотрев в Process Monitor, я увидел, что при запуске моего расширения VS2013 пытается загрузить EntityFramework с другого пути, который имеет его в другой версии - 4.2. Я ожидаю, что VS2013 продолжит поиск EntityFramework и найдет его в папке моего расширения, как и для других библиотек, включенных в мое расширение, но это не так.

В VS2015 VS удается загрузить EntityFramework 5.0.0.0, но это происходит и с другого пути.

Почему VS2013 не продолжает поиск EntityFramework в папке моего расширения?

1 ответ

Вам необходимо указать ProvideCodeBase атрибут, чтобы указать, что ваши дополнительные сборки должны быть загружены. "Иногда" вам везет, и он находит что-то еще, но это никогда не гарантированно сработает. Вы можете увидеть несколько примеров этого использования здесь.