【问题标题】:GAC 32bit vs. 64bit广汽 32 位与 64 位
【发布时间】:2011-09-24 08:39:10
【问题描述】:

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

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

所以这是我的问题:

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

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

  3. 什么决定了应用程序在哪个 GAC 中查找程序集?我假设这取决于应用程序是 64 位还是 32 位,但我想知道是否还有更多。

提前致谢。

更新:

在深入了解 ShaneBlake 的回答之后,我记得 .NET 2.0 和 .NET 4.0 GAC 位于不同的位置。所以:

.NET 2.0 GAC:
c:\windows\assembly(32 位和 64 位?)

.NET 4.0 GAC
c:\windows\Microsoft.NET\assembly\GAC_32(仅限 32 位)
c:\windows\Microsoft.NET\assembly\GAC_64(仅限 64 位)
c:\windows\Microsoft.NET\assembly\GAC_MSIL(32 位和 64 位?)

【问题讨论】:

  • 请注意,如果您正在分发应用程序,则不能在客户端计算机上使用 gacutil。 VS 安装程序/部署项目将允许您将程序集安装在正确的位置。

标签: c# visual-studio-2010 64-bit gac gacutil


【解决方案1】:

gacutil.exe 应该将 .dll 安装到正确的位置,具体取决于它的编译方式。您应该可以在此处找到该文件:%ProgramFiles%\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\

.NET 4 有它自己的 Assembly 文件夹 (c:\windows\Microsoft.NET\assembly),其中有一个 \GAC_32\GAC_64 目录...安装后您可以在其中找到文件。

希望对您有所帮助...

【讨论】:

  • gacutil 在客户端机器上可用吗?我似乎记得只有安装了 SDK 才能使用它。
  • @David:是的。它被认为是一种开发工具,因此您必须安装 SDK。
  • @David 我同意。在我们的网络应用程序中,我更喜欢将它们放在\AppLocalResources 中,这样它们就可以部署在\bin 中,而且我总是知道我使用的是哪个版本...
  • @jrh 好吧,我已经 7 年没有搞砸了。但是,是的,gacutil 没有很多外部依赖项。祝你好运!
  • @3Dave 刚刚回来报告,是的,将 x86 和 x64 版本的 gacutil 复制/粘贴到测试 PC 上确实有效。
【解决方案2】:

对于 Windows 10

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

【讨论】:

  • 我一直在想一件事,有什么理由使用您拥有的绝对最新的 SDK?令人困惑的是,我在 Windows 10 上有 v7.0A,在 Windows 7 上有 v10.0A; SDK版本有什么影响吗?也许向后兼容?附加功能?
  • @jrh 而我们正在恢复僵尸线程:是的,向后兼容性是不使用最新 SDK 的主要原因。如果你需要部署到 Win7,使用 RS5 特定的 SDK 不会让你成为任何朋友。
猜你喜欢
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-04
  • 2012-02-11
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多