Удаленная база кодов
У меня есть длл. Эта 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 ответа
Во-первых, вы можете ошибиться. Даже если вы не изменили версию, ваше приложение может использовать более старую копию сборки.
Предполагая действительный URI в вашем <codebase>
элемент, когда ваше приложение запускается в первый раз, среда выполнения не найдет сборку, пока не прощупает вашу кодовую базу. Затем он загрузит сборку в GAC. Когда ваше приложение запустится снова, среда выполнения найдет эту сборку в GAC, поэтому ей не нужно будет проверять ее.
Вместо того, чтобы использовать <codebase>
рассмотрите использование отражения. В частности, вы можете использовать Assembly.LoadFrom(assemblyUri)
в вашем приложении, получая URI из настроек приложения. Оттуда вы будете создавать объекты, используя Reflection API, особенно используя Activator.CreateInstance<T>()
,
Что касается получения этой сборки с вашего сервера, убедитесь, что ваша DLL находится в правильном месте, и что ваш веб-сервер работает и правильно настроен.
Ваш.dll действительно доступен в этом месте? Вы предлагаете это через какое-то веб-приложение?
Если вы введете этот URL-адрес в веб-браузер, он позволит вам загрузить или открыть этот файл?