2

我有一个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>
4

2 回答 2

1

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

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

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

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

于 2009-05-01T18:55:06.593 回答
0

您的 .dll 是否在该位置实际可用?您是否通过一些 Web 应用程序提供服务?

如果您在网络浏览器中键入该 URL,它是否允许您下载或打开该文件?

于 2009-05-01T18:34:07.720 回答