远程代码库

时间:2009-05-01 18:05:33

标签: c# app-config codebase

我有一个dll。该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 个答案:

答案 0 :(得分:1)

首先,你可能走错了路。即使您没有更改版本,您的应用程序也可能最终使用较旧的程序集副本。

假设<codebase>元素中有一个有效的URI,当您的应用程序第一次运行时,运行时将无法找到程序集,直到它探测您的代码库。然后,它会将程序集下载到GAC。当您的应用程序再次运行时,运行时将在GAC中找到该程序集,因此不需要对其进行探测。

请考虑使用Reflection,而不是使用<codebase>。具体来说,您可能希望在应用程序中使用Assembly.LoadFrom(assemblyUri),从应用程序设置中获取URI。从那里,您可以使用Reflection API创建对象,特别是使用Activator.CreateInstance<T>()

至于从服务器获取程序集,请确保您的DLL位于正确的位置,并确保Web服务器正在运行并正确配置。

答案 1 :(得分:0)

您的.dll在该位置实际可用吗?你是通过一些网络应用程序提供它吗?

如果您在网络浏览器中输入该网址,是否可以下载或打开该文件?