因此,在Win 2008 R2 Std x64上,我有6(6)个gacutil.exe所有不同(不包括VS文件夹中的那些),在:
问题是:
x64
版本的行为有什么不同吗?v7.0A
的{{1}}个版本吗?v6.0A
版本吗?其余部分使用“标准”版本吗?或者,如果有关于这个主题的一般类型文章,我将不胜感激。
更新1。关于Hans Passant's answer:
更新2。
所以,对我来说,似乎可以安全地使用3号(然后.NET4.0不可用)或5号,否则对于Windows x86和x64上的所有GAC操作。问题的答案是:
NETFX 4.0 Tools
版本(如果.NET4.0可用)进行所有GAC操作。答案 0 :(得分:5)
Gacutil.exe是一个Windows SDK工具,而不是.NET框架工具。您的计算机上有两个版本的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 Tools中的程序集。对于早期的,必须使用Bin中的那个。
最好不要使用它,程序集应该在开发机器上设置Copy Local属性。 GAC是一个部署详细信息,当您的GAC拥有您的用户GAC没有的程序集时,您会遇到麻烦。
答案 1 :(得分:3)
简短版本:如果安装了.NET 4.0,请使用NETFX 4.0 Tools
版本。否则它并不重要。
问题答案:
NETFX 4.0 Tools
版本。不确定是否可以安装v7.0 SDK并且没有安装.NET 4.0。NETFX 4.0 Tools
版本进行所有GAC操作。答案 2 :(得分:0)
这不是最好的答案,但我注意到了观察。根据您为相关Visual Studio安装开发的应用程序所使用的内容,使用最新版本文件夹。
C:\Program Files (x86)\Microsoft SDKs\Windows\{SDK version}\bin\NETFX 4.5.1 Tools\gacutil.exe
比较控制面板>节目和特征>我的Visual Studio安装的“已安装”日期,我在这里看到许多不同的文件夹。我猜这两个安装过程中有多个文件夹被更新。
“gacutil.exe”所在的文件夹和修改日期:
C:\Program Files (x86)\Microsoft SDKs\Windows\
C:\Program Files (x86)\Microsoft SDKs\Windows\v6.0A\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0\ - 3/20/2014
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.0A\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1\ - 5/15/2015
C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\ - 5/15/2015
Windows Visual Studio安装日期为“已安装”:
Visual Studio 2012 - 3/20/2014
Visual Studio 2013 - 5/15/2015
为了比较GAC中的内容,我运行了这个命令并对文件进行了差异化比较。
cd C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\bin\NETFX 4.5.1 Tools\
gacutil /l > c:\v8.1A.gac.txt
然后我为每个版本更改了相应的文件夹。