我应该使用什么gacutil.exe?

Pet*_*lin 10 .net windows gac gacutil .net-4.0

因此,在Win 2008 R2 Std x64上,我有6(6)个gacutil.exe所有不同(不包括VS文件夹中的那些),在:

  1. c:\ Program Files\Microsoft SDKs\Windows\v6.0A\Bin
  2. c:\ Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64
  3. c:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin
  4. c:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\x64
  5. c:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools
  6. c:\ Program Files(x86)\ Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools\x64

问题是:

  1. 是否x64版本有任何行为上的差异?
  2. 我应该更喜欢v7.0A其他版本v6.0A吗?
  3. 我应该使用NETFX 4.0 Tools.NET 4.0程序集的版本,还有其他的"标准"版本?

或者,如果有关于这个主题的一般类型的文章,我将不胜感激.

更新1.关于Hans Passant的回答:

  1. gacutil.exe "构建,部署和配置工具(.NET Framework)"中的.NET Framework工具的一部分,因为现在过时(!)shfusion.dll是;
  2. 确实v6.0A来自VS2008安装,可以忽略(1,2);
  3. 64位解释理论听起来也合理.我还认为很可能是一个IA64版本的gacutil.exe,所以它就像是"每个平台的工具副本",它刚刚发生,所以x86版本因为WoW64而无处不在.列表中的减号2 gacutil版本(4,6);
  4. 关于使用哪个版本的部分似乎是错误的.V4.0 gacutil.exe根据它的目标CLR检测并放置程序集,适用于.NET 4.0和早期版本程序集.所以问题是,为什么要离开V2.0 gacutil.exe?我的猜测是为了在.NET4.0不可用的环境中进行部署.
  5. 使用或不使用GAC,不在问题中.所以我留下最后一段没有评论.

更新2.

所以,对我来说,似乎可以安全地使用3号(然后.NET4.0不可用)或5号,否则对于Windows x86和x64上的所有GAC操作.问题的答案是:

  1. 没有.
  2. 没关系,但使用更新的版本似乎更合乎逻辑.
  3. 不,您可以随时使用NETFX 4.0 Tools版本(如果.NET4.0可用)用于所有GAC操作.

Han*_*ant 5

Gacutil.exe是Windows SDK工具,而不是.NET Framework工具。您的计算机上有两个版本的SDK。从VS2008安装中获得6.0A,从VS2010安装中获得7.0A。您还具有64位操作系统,因此您也可以获得64位工具。对于gacutil.exe来说,这无关紧要,不知道为什么要分别包含它。可能要保持Visual Studio命令提示符正常运行,请注意您有单独的32位和64位版本。对于C ++项目,这很重要。VS2010允许同时针对CLR版本4和CLR版本2,因此共有6个版本。

重要的是您的计算机上有两个GAC。.NET 4程序集的GAC存储在c:\ windows \ microsoft.net \ assembly中。对于早期版本,它存储在c:\ windows \ assembly中。您必须使用正确版本的gacutil.exe才能使程序集进入正确的GAC。对于面向.NET 4的程序集,必须使用Bin \ NETFX 4.0工具中的程序集。对于较早的版本,必须使用Bin中的那个。

最好不要使用它,程序集应该在开发机器上设置“复制本地”属性。GAC是一个部署细节,当您的GAC具有用户GAC没有的程序集时,您会遇到麻烦。


Pet*_*lin 3

简短版本:如果您安装了 .NET 4.0,请使用NETFX 4.0 Tools版本。否则,这并不重要。

问题解答:

  1. 不。
  2. 除非没有安装 .NET 4.0,否则并不重要,在这种情况下您应该使用NETFX 4.0 Tools版本。不确定是否可以拥有 v7.0 SDK 而未安装 .NET 4.0。
  3. 不,您始终可以(并且应该)NETFX 4.0 Tools对所有 GAC 操作使用版本。