所以,在Win 2008 R2 Std x64上,我有6(6)个gacutil.exe全部不同(不包括VS文件夹中的),在:
c: Program Files Microsoft SDKs Windows v6.0A Bin
c: Program Files Microsoft SDKs Windows v6.0A Bin x64
c: Program Files(x86) Microsoft SDKs Windows v7.0A Bin
c: Program Files(x86) Microsoft SDKs Windows v7.0A Bin x64
c: Program Files(x86) Microsoft SDKs Windows v7.0A Bin NETFX 4.0工具
c: Program Files(x86) Microsoft SDKs Windows v7.0A Bin NETFX 4.0 Tools x64
问题是:
x64版本在行为上有什么不同?
我应该更喜欢v7.0A版本其他v6.0A ?
我应该使用.NET 4.0组件的NETFX 4.0 Tools版本,其余的是“标准”版本吗?
或者,如果有关于这个问题的一般性文章,我将不胜感激。
更新1.关于Hans Passant的回答 :
我如何修复Windows 8上的.NET Framework 4.0?
在C#中将两个方法分组在一起
Path.Combine绝对与相对pathstring
MSBuild“sgen.exe”丢失
不能修改registry(或运行pipe理员级命令)作为pipe理员在C#中
gacutil.exe 是一个 “构build,部署和configuration工具(.NET Framework)” 的.NET Framework工具的一部分,就像现在已经过时的(!) shfusion.dll一样 ;
确实v6.0A都是从VS2008安装的,可以忽略(1,2);
64位的解释理论听起来也是合理的。 我也想到最有可能的是一个IA64版本的gacutil.exe ,所以它就像一个“每个平台的工具副本”,它只是发生了,所以x86版本因为WoW64在任何地方运行良好。 从列表中减去2 gacutil版本(4,6);
关于哪个版本使用的部分似乎是错误的。 V4.0 gacutil.exe根据目标CLR检测并放置程序集,并且对于.NET 4.0和更早版本的程序集都可以正常工作。 所以问题是,为什么要离开V2.0 gacutil.exe? 我的猜测是为了部署在那里的环境.NET4.0不可用。
使用或不使用GAC,不在问题中。 所以我留下最后一段没有评论。
更新2。
所以,对我来说,似乎可以安全地使用数字3(然后.NET4.0不可用)或数字5,否则在Windows x86和x64上的所有GAC操作。 问题的答案是:
没有。
没关系,但使用更新的版本似乎更合乎逻辑。
不,您可以始终为所有GAC操作使用NETFX 4.0 Tools版本(如果.NET4.0可用)。
如何通过Windows应用程序或Web应用程序调用代码来识别代码
SendKeys.send被阻止
访问Windows OpenSSH SFTP服务器上的文件时出现“错误消息”错误
有没有办法检测到“几乎”远程桌面断开连接(即短暂的高延迟时间)?
如何以编程方式检测是否在Windows桌面应用程序中启用/禁用了JavaScript? (Webbrowser控件)
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。 GAC for .NET 4程序集存储在c: windows microsoft.net assembly中。 对于早期版本,它存储在c: windows assembly中。 您必须使用正确版本的gacutil.exe将程序集导入适当的GAC。 对于以.NET 4为目标的程序集, 必须使用Bin NETFX 4.0工具中的一个。 而对于早期的,你必须使用Bin中的那个。
完全不使用它是最好的,程序集应该在开发机器上设置copy Local属性。 GAC是一个部署细节,当您的GAC拥有您的用户的GAC没有的程序集时,您将遇到麻烦。
简短版本:如果您安装了.NET 4.0,请使用NETFX 4.0 Tools版本。 否则,这并不重要。
问题的答案:
没有。
除非没有安装.NET 4.0,否则无关紧要,在这种情况下,您应该使用NETFX 4.0 Tools版本。 不知道是否有可能有一个V7.0 SDK,并没有安装.NET 4.0。
不,您可以随时(也应该)为所有GAC操作使用NETFX 4.0 Tools版本。
这不是最好的答案,但我注意到一个观察。 使用最新版本的文件夹,基于您正在为相关Visual Studio安装开发的应用程序所使用的任何内容。
C:Program Files (x86)Microsoft SDKsWindows{SDK version}binNETFX 4.5.1 Toolsgacutil.exe
比较我的Visual Studio安装的控制面板>程序和功能>“安装”日期时,在这里看到许多不同的文件夹。 我猜这两个安装过程中更新了多个文件夹。
C:Program Files (x86)Microsoft SDKsWindows C:Program Files (x86)Microsoft SDKsWindowsv6.0A - 3/20/2014 C:Program Files (x86)Microsoft SDKsWindowsv7.0A - 3/20/2014 C:Program Files (x86)Microsoft SDKsWindowsv7.1A - 5/15/2015 C:Program Files (x86)Microsoft SDKsWindowsv8.0 - 3/20/2014 C:Program Files (x86)Microsoft SDKsWindowsv8.0A - 5/15/2015 C:Program Files (x86)Microsoft SDKsWindowsv8.1 - 5/15/2015 C:Program Files (x86)Microsoft SDKsWindowsv8.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 SDKsWindowsv8.1AbinNETFX 4.5.1 Tools gacutil /l > c:v8.1A.gac.txt
然后我改变了每个版本的文件夹。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。