Сборка присутствует в GAC, но система обнаружила его только при копировании в локальный каталог. Зачем?

У меня была ситуация, похожая на ту, что подробно описана здесь, которая также имеет отличное решение. То, как я обошел мою ошибку, отличается от того, что было в посте. Я не уверен, почему это решило проблему. Мне очень любопытно понять, почему.

Моя ситуация - у меня была собственная 32-битная сборка A.exe, которая загружала System.Data, а System.Data в свою очередь загружала System.Numerics. "Невозможно загрузить сборку" произошло с System.Numerics. Сборка System.Numerics присутствовала в GAC, и я с помощью средства просмотра журнала fusion обеспечил соответствие токена открытого ключа ожидаемой сборки и токена в GAC. Но журналы слияния все равно говорят, что поиск в GAC был неудачным.

Проблема исчезла, когда я скопировал сборку System.Numerics из местоположения GAC в каталог A.exe. Мне любопытно, почему это решило проблему и почему поиск в GAC оказался неудачным.

1 ответ

Если вы разрабатываете на 64-битной машине и используете "Использовать любой ЦП" в любом из проектов в решении, оно по умолчанию будет загружать сборки GAC, которые являются 64-битными. Чтобы избежать этого, вы настраиваете все свои проекты для компиляции только на 32-битной версии. Таким образом, будет использоваться только 32-битный GAC.

Другие вопросы по тегам