1

我们正面临一个独特而痛苦的局面。传统上,我们一直使用 GAC 和策略文件来控制 .NET 应用程序的 DLL 版本。但是,我们有一个非常独特的情况,并且遇到了重大问题,因为我们的一些应用程序不尊重策略文件。尤其是引用具有策略文件的 .NET 1.1 dll 的 .NET 2.0 应用程序。

我们在 Windows 应用程序以及大量 Web 应用程序中混合了动态运行(通过反射加载)的项目。我们希望转向更多的“集中式 DLL 存储”,而不是担心 GAC 版本控制。但是我们似乎无法找到一种方法来告诉我们的应用程序“在此处查找任何 DLL”。

查看一些程序集信息节点(http://msdn.microsoft.com/en-us/library/twy1dw1e.aspx),我们可以找到一部分,但我们必须定义每个应该查找的 DLL,这是不可能的,因为我们有大约 200 个不同的应用程序需要定期更新 web.config,因为我们更新了共享 DLL 的版本。

有没有人知道我们如何移动 DLL 引用?CopyLocal 不是一个选项,因为有时我们需要应用程序来使用共享 DLL 的新版本。至少现在,GAC 也不是一个真正的选择。

4

1 回答 1

1

您可以在 app.config中使用CodeBase 提示,

<?xml version="1.0"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="MyDll" />
        <codeBase version="1.0.1000.20000" href="file:///c:\SharedDlls" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

如果您想在 Machine.Config 文件中使用 DLL,您的 DLL 需要一个严格的名称(如果您来自 GAC 世界并且它是 Microsoft 认证所必需的,这对您来说应该不是问题)。

这是MSDN 博客上的链接,它提供了一些更深入的建议。

于 2009-04-01T19:55:05.920 回答