Приоритеты загрузки сборки .NET

У меня есть решение с тремя проектами (GUI, BL и DAL). Узел DAL подписан и развернут в GAC.

Когда я создаю решение, DAL компилируется и сборка помещается в папку bin основного проекта. Но когда я запускаю приложение, он загружает версию GAC вместо локальной. Почему это?

Я понял, что, поскольку версия в GAC не была последней, и некоторые методы отсутствовали, хотя она была скомпонована.

Соответствует ли GAC приоритет над локальной папкой bin?

Tks заранее

Ответы

Ответ 1

Короткий ответ Да, GAC имеет приоритет над локальными файлами.
это другое поведение от того, к чему мы привыкли в родном мире dll (за исключением некоторых системных dll, которые всегда загружаются из SYSTEM32 независимо от того, что).

Почему?
Представьте себе, что у вас есть несколько приложений с одной и той же сборкой, теперь на сборке есть ошибка, как вы исправляете все свои приложения? Трудно начать поиск всех приложений на всех драйверах, а проще всего развернуть одну сборку на ПК GAC и сразу исправить все приложение.

Что касается вашей проблемы, если вы меняете API, вам нужно изменить версию сборки этой сборки, таким образом, механизм слияния подберет версию, находящуюся в локальной папке.

Ответ 2

Да, сначала проверьте GAC. Правила загрузки документируются здесь. Чтобы устранить проблему, вы должны обновить версию сборки при изменении API.