我注意到.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.谢谢大家的帮助!
谢谢,
- 罗伯特·
.Net 4.0 使用不同的 GAC,在Windows\Microsoft.Net\assembly.
中的文件Reference Assemblies是空存根,仅用于在 Visual Studio 中过滤不同目标框架的 IntelliSense。
如果您在 ILSpy 中打开它们,您将看到所有方法都是空的。