对于一个小C#编译器,我需要找到标准.NET程序集的路径,如System.dll,System.Xml.dll以及“Add”参考中“.NET”选项卡下列出的几乎所有assmeblies “Visual Studio中的窗口(2010)。
我会使用绝对路径,但我觉得这可以在特殊情况下中断。
答案 0 :(得分:5)
这些都存储在%WINDIR%\assembly
的GAC中,您可以在Windows资源管理器中查看。
实际的dll可以在GAC
,GAC_32
和GAC_MSIL
文件夹的子文件夹中找到,看起来依赖于它们的版本。在我的机器上,我还有三个NativeImages
个文件夹,它们似乎也包含GAC的dll。
Windows资源管理器不允许您直接浏览这些文件夹(据我所知),但您可以通过命令提示符到达那里。
GAC中dll的完整路径是
%WINDIR%\assembly\GACFOLDER\FILENAME\VERSION__PUBLICKEYTOKEN\FILENAME.dll
e.g。在我的机器上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
答案 1 :(得分:5)
编译时,您可以使用%ProgramFiles(x86)%\Reference Assemblies\Microsoft\Framework\.NETFramework
另请参阅(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework
下(HKEY_LOCAL_MACHINE|HKEY_CURRENT_USER)\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders
和{{1}}下的注册表项。
GAC更适合运行时使用。
答案 2 :(得分:1)
大多数都在GAC中,我相信您会被指示使用您自己的编译器。帮助编译器等的文档是在旧版本的.NET Framework下的tools developer文件夹下找到的。
我不会完全不喜欢“硬编码”文件夹本身,但是你将被锁定到特定版本。我并不是说这是正确的方法,但.NET的位置不太可能改变,很可能你的编译器卡在特定的版本中。如果你走这条路线......为了在各种机器上安全,你应该使用%WINDIR%来确定安装窗口的位置(如果你从未使用过这个并想看看变量,请在命令提示符下尝试cd%WINDIR%一样)。学术演习结束。
有一点需要注意的是,通过检查MS在vNext(?)中的“编译器即服务”方向,可以更好地提供一些您正在尝试的内容。这个想法/功能已经出现在Mono(开源.NET)中。