找到标准.NET程序集的位置?

Ver*_*cas 5 .net c# assemblies

对于一个小C#编译器,我需要找到标准.NET程序集的路径,如System.dll,System.Xml.dll以及"添加引用"窗口中".NET"选项卡下列出的几乎所有组件. Visual Studio(2010).
我会使用绝对路径,但我觉得这可以在特殊情况下中断.

Ric*_*ett 5

这些都存储在GAC中%WINDIR%\assembly,您可以在Windows资源管理器中查看.

实际的DLL可以在子文件夹中找到GAC,GAC_32GAC_MSIL文件夹,似乎依赖于它们的版本.在我的机器上,我有三个额外的NativeImages文件夹,似乎也包含GAC的dll.

Windows资源管理器不允许您直接浏览这些文件夹(据我所知),但您可以通过命令提示符到达那里.

GAC中dll的完整路径是

%WINDIR%\assembly\GACFOLDER\FILENAME\VERSION__PUBLICKEYTOKEN\FILENAME.dll

例如,在我的机器上System.Xml.dll可以找到不同版本的C:\WINDOWS\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089 C:\WINDOWS\assembly\GAC\System.Xml\1.0.5000.0__b77a5c561934e089 C:\WINDOWS\assembly\NativeImages1_v1.1.4322\System.Xml\1.0.5000.0__b77a5c561934e089_2775eea1 C:\WINDOWS\assembly\NativeImages1_v1.1.4322\System.Xml\1.0.5000.0__b77a5c561934e089_4c5fbb92


Ste*_*ary 5

编译时,可以使用下面的参考装配 %ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework

另请参阅KB306149中记录的(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework和下的注册表项.(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders

GAC更适合运行时使用.