为什么不将.NET Framework 4.0 DLL添加到GAC?

Joe*_*ool 6 .net dll gac

我注意到.NET DLL的位置有些奇怪.我试图调试System.ServiceModel.dll的问题,我注意到即使我安装了.NET 4.0,我的GAC中也只安装了3.0版本的ServiceModel DLL(我通过探索C:\ Windows进行了检查) \部件).但是,如果我导航到"C:\ Program Files\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\Profile\Client",则4.0版本就位于此处.那么为什么.NET不将4.0版本安装到GAC中呢?

考虑到它没有,我的4.0程序如何知道在哪里可以找到4.0 DLL?我上面给出的文件路径是自动探测的吗?我回头看了我的应用程序,它使用4.0 DLL来确认它不会在本地复制DLL,因此它似乎必须从GAC获取它(现在我知道DLL不在那里),或者在探测.NETFramework文件夹.这让我很困惑......

编辑:我遵循MystereMan的建议并运行"Gacutil.exe/l System.ServiceModel",但它仍然只显示3.0版本.这是否意味着.NET 4毕竟没有将DLL安装到GAC中?

编辑#2和解决方案:我的PATH中的gacutil.exe是一个旧版本,无法看到4.0程序集.通过搜索我的计算机,我在这里找到了4.0版本的gacutil.exe:C:\ Program Files\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools.使用它,我终于可以看到列出了System.ServiceModel.dll的4.0.谢谢大家的帮助!

谢谢,

- 罗伯特·

SLa*_*aks 3

.Net 4.0 使用不同的 GAC,在Windows\Microsoft.Net\assembly.

中的文件Reference Assemblies是空存根,仅用于在 Visual Studio 中过滤不同目标框架的 IntelliSense。
如果您在 ILSpy 中打开它们,您将看到所有方法都是空的。

  • @JoeCool - `Gacutil.exe /l <程序集名称>` 还有 fusion.dll api http://support.microsoft.com/default.aspx?scid=kb;en-us;317540 (2认同)