2017-10-12 102 views
0

我已经与2.0.0.1版本在一台服务器可通过访问http://someipaddress/assembly/test.dll,我有另一种应用程序,它需要下载此Test.dll的和必须下载一个DLL访问这些方法。Assembly.LoadFrom如何在多版本的DLL行为

上网时对于这一点,我已经得到了三种不同的方法做, 1 Assembly.LoadFrom() 2. Assembly.LoadFile() 3. Assembly.Load()

我已经尝试Assembly.LoadFrom("http://someipaddress/assembly/test.dll")

现在我已经替换test.dll 2.0.0.2版本和 会发生什么应用程序下载2.0.0.2 test.dll和已经下载test.dll 2.0.0.1。 哪个dll会引用的应用程序? 它会使用现有的test.dll 2.0.0.1,因为它在访问test.dll 2.0.0.2时已经下载了吗?

请对此建议。

+0

很不清楚你在烦恼什么,很难猜出“已下载”的含义以及它为什么重要。您将不得不重建应用程序,以便使用更新后的引用程序集。或者在app.config文件中提供一个bindingRedirect来表示2.0.0.2可以。如果你不这样做,那么当应用程序得到错误的DLL时,会发生预期的和逻辑的事情。尝试一下。 –

回答

0

这取决于你如何引用程序集。默认情况下,如果没有绑定重定向,新的dll会导致异常。你可以通过在应用程序配置文件中指定一个绑定重定向规则来解决这个问题。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
     <assemblyIdentity name="Test" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.2" newVersion="2.0.0.2" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 

但是,您需要在获取新版本的dll时更新它。