2

有很多讨论显示如何从 BIN 和 GAC 加载程序集......我的问题更笼统,我很想知道程序集加载是如何工作的。

例如

在 BIN 文件夹中,我们可以拥有

A.dll
A.dll.config 

A.dll.config 文件可能如下所示:

<?xml version="1.0"?>
<configuration>
  <startup>
    <supportedRuntime version="v2.0.50727"/>
  </startup>
</configuration>

帮助我们设置正确的程序集参考。

我想知道如何创建一个需要 B.dll 但没有指定任何版本的 A.dll,所以如果总是采用 BIN 文件夹中的 B.dll。

我的问题是关于 SDK 的更新,我的所有代码仍然指向旧的 SDK 版本,我想让我的程序集查找资源的所有版本中最顶层的版本,BIN 或 GAC 并使用那个......

我怎么能在 Visual Studio 中这么说?我只能添加对物理文件(版本)的引用:-(

4

2 回答 2

1

您可以使用后期绑定和反射。有很多地方可以阅读这方面的内容,但您可以从这里开始。

于 2009-10-19T12:58:27.920 回答
1

如果我理解正确,我猜你可以通过 AppDomain 对象使用“插件”的方式来做事。也许通过 AppDomain 加载程序集,因为您可以为加载的程序集设置路径,您将能够轻松地替换文件、卸载程序集并在 ShadowCopy 中重新加载新的程序集。ShadowCopy 允许您将最新文件复制到当前文件程序集的相同位置。然后,建立你的机制来检查一个新文件,如果它存在,然后卸载你的程序集并重新加载最新的。这样,您的程序的一切都将是非常透明的,尽管它需要您进行更多的编程。尽管如此,您将在长期发展中获益。

于 2009-10-19T14:51:57.247 回答