2011-02-03 5 views
0

У меня есть проект C#, который ссылается на сборку смешанного режима C++/CLI. Эта сборка хранится внутри папки в PATH, и она также присутствует в GAC, но когда она выполняется, я получаю:Почему сборочный загрузчик не проверяет GAC для сборки смешанного режима C++/CLI?

System.IO.FileNotFoundException: Не удалось загрузить файл или сборку 'PcsSocketCommunications500, Version = 0.0. 0.0, Culture = neutral, PublicKeyToken = null '

Версия 0.0.0.0 - это потому, что C++/CLI не имеет класса версии сборки, но насколько я знаю, это не должно быть проблемой.

Монитор процесса работы Я видел, что система просто ищет сборку в той же папке, что и основной процесс ... Я не специалист по загрузке сборок, но я ожидал увидеть хотя бы некоторые поисковые системы GAC и «может быть» некоторый путь выбирает только .. Вот что я получил (PcsSocketCommunication500.dll является ++/сборки C CLI и в черном цвете это рабочий каталог):

enter image description here

Любая идея о том, почему загрузчик не проверяя GAC или PATH?

ответ

2

PublicKeyToken = нуль

Сборку не силен по имени. Это означает, что он не может быть расположен в GAC, CLR не будет там смотреть. Не уверен, что вы сделали, чтобы попасть в GAC, но это не должно быть возможным как есть.

+0

Право. Сборка была подписана и установлена ​​в GAC после компиляции кода, на который он ссылался (попытка исправить проблему). Я думаю, что, поскольку звонящий знал, что он не подписан, он не искал в ПКК. Еще раз спасибо. –