为什么框架dll在几个地方重复?

时间:2010-05-17 17:48:34

标签: .net assemblies gac

安装.Net 4并获得一些已经回答的问题here我还意识到框架dll如何在不同的框架版本的几个地方重复(这不是新的,它发生在以前的版本中,但直到现在才注意到它)

1 - GAC:%systemroot%\ assembly

2- Framework安装目录:%systemroot%\ Microsoft.NET \ Framework \ v ...

3-如果您安装了Windows SDK,也可以在:C:\ Program Files \ Microsoft SDKs \ Windows \

我认为最后一个是所谓的“参考装配”并且有额外的元数据来帮助Visual Studio,但是

2号位置怎么样?为什么在那里重复集会?

2 个答案:

答案 0 :(得分:2)

  1. 不,这是.NET 1.x到3.5的GAC位置。 GAC for 4.0位于c:\ windows \ microsoft.net \ assembly中。移动的原因尚不清楚,可能是为了避免直接从GAC引用程序集的项目出现问题,这是一个很大的禁忌,但已经完成了。

  2. 是的,参考组件就在那里。也在c:\ program files \ reference程序集中。它们最初是存储在GAC中的程序集的逐字副本。直到您部署某种修补程序。将它们分开可确保您构建针对“正确”框架程序集的程序,而不是您恰好存储在GAC中的程序。

  3. 是的,没有框架程序集,只需构建工具。

答案 1 :(得分:1)

这是一个有根据的猜测,而不是一个实际的答案,但......

为了最初GAC一个DLL,你需要有一个完整的DLL(也就是非参考汇编)供GAC使用。引用程序集不起作用,因为它没有可执行代码。因此,您需要一个真正的DLL来获取GAC,以便获得位置#2。