两个不同的应用程序使用代码库和GAC加载相同的程序集

时间:2014-08-12 18:44:30

标签: c# .net .net-assembly gac

我们有两个不同的应用程序(使用.NET开发):

1st App:Winservice。

第二个应用程序:桌面应用程序。

桌面应用正在从GAC加载程序集。 Winservice 过去做过同样的事情,但现在我们需要Winservice从其他位置加载相同的组件。

但是GAC赢了,我们无法使用这个Winservice(使用app.config中的代码库)来加载程序集。它总是得到GAC的。

如果我们删除GAC的那个。有用。但我们需要其他行为。来自GAC和Winservice的桌面来自代码库中定义的路径。

这是否可以在不更改装配版本的情况下实现?

1 个答案:

答案 0 :(得分:1)

如果没有某种修改程序集的工作,这是不可能的。简而言之,GAC总是获胜。期。如果程序集具有强名称,则始终首先检查GAC。即使您将其作为字节数组加载到内存中并使用Assembly.Load(byte[]),也会检查强名称,如果它是GAC程序集,则会从GAC加载。

几种可能的解决方法:

  • 碰撞装配版本。
  • 使用其他强名称密钥重新装配程序集。构建引用此版本的服务。