Удаленная база кодов - PullRequest
2 голосов
/ 01 мая 2009

У меня есть длл. Эта DLL загружена на сервер. Я хочу, чтобы каждый раз, когда приложение начинало получать «последнюю» dll с сервера, я использовал следующий код в моем app.config. Почему не работает?

вот файл app.config:

<configuration>
<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="ReflectionTest"
            publicKeyToken="f94c9b9f0707ee96"
                culture="neutral" />
            <codeBase version="1.0.0.0"                   
                href="http://127.0.0.1/ReflectionTest.dll"/>
        </dependentAssembly>
    </assemblyBinding>
</runtime>
</configuration>

Ответы [ 2 ]

1 голос
/ 01 мая 2009

Во-первых, вы можете ошибиться. Даже если вы не изменили версию, ваше приложение может использовать более старую копию сборки.

Предполагая допустимый URI в элементе <codebase>, когда ваше приложение запускается в первый раз, среда выполнения не найдет сборку до тех пор, пока не будет проверена ваша кодовая база. Затем он загрузит сборку в GAC. Когда ваше приложение запустится снова, среда выполнения найдет эту сборку в GAC, поэтому ей не нужно будет ее проверять.

Вместо использования <codebase> рассмотрите возможность использования Reflection. В частности, вы можете использовать Assembly.LoadFrom(assemblyUri) в своем приложении, получая URI из настроек приложения. Оттуда вы будете создавать объекты, используя Reflection API, в частности, используя Activator.CreateInstance<T>().

Что касается получения этой сборки с вашего сервера, убедитесь, что ваша DLL находится в правильном месте, и что ваш веб-сервер работает и правильно настроен.

0 голосов
/ 01 мая 2009

Ваш .dll действительно доступен в этом месте? Вы подаете это через какое-то веб-приложение?

Если вы введете этот URL-адрес в веб-браузер, это позволит вам загрузить или открыть этот файл?

...