GAC 32bit vs. 64bit



我已经搜索了一段时间,试图更好地理解这一点,但没有找到任何直接的答案。

我有一个组件需要添加到GAC中。我运行的是Windows 7 64位,为了解决问题(SSIS 2005无法识别DLL),我正在努力确保在正确的GAC中注册了DLL(.NET 4.0)。

以下是我的问题:

  1. 64位和32位GAC在Windows7中的物理位置在哪里?我知道C:\Windows\assembly,但不确定这是哪一个,另一个在哪里。

  2. 我应该使用哪个版本的gautil将程序集添加到64位GAC?32位GAC?我知道C:\Program Files(x86)\Microsoft Visual Studio 10.0\VC,我假设这是32位的,但不确定64位的gautil在哪里。

  3. 是什么决定应用程序在哪个GAC中查找程序集?我认为这是由应用程序是64位还是32位决定的,但我想知道它是否还有更多。

提前谢谢。

更新:

在深入研究了ShaneBlake的以下答案后,我想起了.NET 2.0和.NET 4.0的GAC位于不同的位置。因此:

.NET 2.0 GAC:
c:windowsassembly(32位和64位?)

.NET 4.0 GAC
c:windowsMicrosoft.NETassemblyGAC_32(仅限32位)
c:windowsMicrosoft.NETassemblyGAC_64(仅限64位)
c:windowsMicrosoft.NETassemblyGAC_MSIL(32位和64位?)

gacutil.exe应根据编译方式将.dll安装到正确的位置。你应该可以在这里找到文件:%ProgramFiles%Microsoft SDKsWindowsv7.0AbinNETFX 4.0 Tools

.NET 4有自己的Assembly文件夹(c:windowsMicrosoft.NETassembly),其中包含GAC_32GAC_64目录。。。安装文件后,您可以在这里找到它们。

希望能有所帮助。。。

对于Windows 10

C: \Program Files(x86)\Microsoft SDK \Windows\v7.0A\Bin

最新更新