Использование Codebase для загрузки сборки

Основываясь на этом вопросе, я попытался использовать <codebase> для поиска внешней сборки . Теперь, когда я запускаю программу, я получаю сообщение об ошибке, в котором говорится, что частная сборка находится вне базы приложений. Как я могу решить эту проблему? В одном предложении, которое я видел, говорилось о том, чтобы подписать сборку. Я сделал это, но тогда моя программа не смогла найти сборку. Когда я не подписал его, я получаю ошибку outside the appbase. Как загрузить сборку, расположенную в другом месте, с помощью <codebase> и не устанавливать в GAC? (Проверка тоже не сработала, и кажется, что она все еще должна присутствовать в папке приложения) Мой файл конфигурации:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>

        <assemblyIdentity name="NGameHost"

                          culture="neutral" />
        <codeBase version="1.0.0.0" 
                  href="C:/Program Files/NetworkGame3/api/NGameHost.exe"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

</configuration>

person XSL    schedule 18.12.2011    source источник


Ответы (1)


Если сборка является частной сборкой, параметр базы кода должен быть путем относительно каталога приложения.

(из MSDN)

person sq33G    schedule 18.12.2011
comment
Я сделал относительный путь (используя ../../...), и появляется то же сообщение об ошибке. - person XSL; 18.12.2011
comment
Когда вы перемещаете сборку в дочерний каталог вашего приложения, а не в родительский каталог, имеет ли это значение? - person sq33G; 18.12.2011
comment
Проблема в том, что dll находится в этом конкретном каталоге, потому что там также много других зависимостей, поэтому я не могу переместить ее в свой дочерний каталог. Однако, если я создаю новый проект в этом каталоге и вызываю DLL, он утверждает, что не может загрузить другую зависимость (которую может загрузить исходная DLL). Возможно, это DLL, которая вызывает проблему. - person XSL; 18.12.2011
comment
Спасибо, sq33G, ваш комментарий поставил меня на правильный путь. Оказалось, что проблема была в одной из DLL-зависимостей, а не в той, которую я вызывал. Мне пришлось переключить свой профиль фреймворка на 2.0 (который использует зависимость), и теперь он работает! - person XSL; 18.12.2011