我有一个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>
答案 0 :(得分:1)
首先,你可能走错了路。即使您没有更改版本,您的应用程序也可能最终使用较旧的程序集副本。
假设<codebase>
元素中有一个有效的URI,当您的应用程序第一次运行时,运行时将无法找到程序集,直到它探测您的代码库。然后,它会将程序集下载到GAC。当您的应用程序再次运行时,运行时将在GAC中找到该程序集,因此不需要对其进行探测。
请考虑使用Reflection,而不是使用<codebase>
。具体来说,您可能希望在应用程序中使用Assembly.LoadFrom(assemblyUri)
,从应用程序设置中获取URI。从那里,您可以使用Reflection API创建对象,特别是使用Activator.CreateInstance<T>()
。
至于从服务器获取程序集,请确保您的DLL位于正确的位置,并确保Web服务器正在运行并正确配置。
答案 1 :(得分:0)
您的.dll在该位置实际可用吗?你是通过一些网络应用程序提供它吗?
如果您在网络浏览器中输入该网址,是否可以下载或打开该文件?