列出所有可用的.NET 2.0程序集的最佳方法是什么?
所需列表的一个示例是当您在.NET选项卡中执行"添加引用..."时,MS Visual Studio会显示一个.
我读过Visual Studio使用自己的目录配置和GAC另一个和.NET安装另一个.有关如何以计算机可移植方式知道此目录的位置的任何想法(例如,另一台计算机可能在D:驱动器中安装了Windows)?
从列出的信息来看,它必须是Assembly.Loadxxxx()它.
注意:它应该以编程方式完成,而不是使用gacutil(例如,除非它提供了C#API).所有这一切的目的是创建一个自定义动态脚本编辑器,以便您了解获取此信息的必要性.
首先,GAC中的参考装配和装配之间存在重要差异.要编译代码,您需要一个引用程序集.要运行代码,您需要与.exe相同的文件夹中的程序集副本或GAC中的程序集.
通常,在安装.NET应用程序时,其安装程序将复制它在GAC中使用的程序集.这些程序集不能用作引用程序集,您无法找到它存储在哪个文件夹中,因此您无法告诉编译器其/ reference命令行参数的正确值.好吧,你可以找到,但微软试图尽可能使用shell加载项.
安装允许您在自己的程序中使用其程序集的.NET应用程序时会发生不同的情况.像.NET框架一样.它将为每个组件制作两个副本.一个是GAC,另一个是"知名"的位置.对于.NET框架,这些众所周知的位置是c:\ windows\microsoft.net \和c:\ program files\reference assemblies.后一个文件夹开始被.NET 3.0及更高版本使用.
Visual Studio的"添加引用"对话框使用列出这些已知位置的注册表项.有一对,但重要的是HKLM\Software\Microsoft\.NETFramework\AssemblyFolders
.
简而言之:您可以使用该注册表项生成"添加引用"对话框生成的相同列表.但它不是100%可靠,您可能会错过某些产品在其他地方复制的参考组件.您必须使用VS中的"浏览"选项卡添加对这些选项的引用.并搜索整个磁盘以自行查找.