首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取每个GAC程序集的位置?

要获取每个GAC(全局程序集缓存)程序集的位置,您可以使用.NET Framework提供的工具,如gacutil.exe,或者使用代码

方法1:使用gacutil.exe工具

  1. 打开命令提示符(CMD)。
  2. 输入以下命令并按Enter键:gacutil -l 这将列出所有在GAC中的程序集及其版本。

方法2:使用代码

以下是一个简单的C#控制台应用程序,用于检索GAC中程序集的位置。

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;

namespace GacAssemblyLocator
{
    class Program
    {
        static void Main(string[] args)
        {
            Assembly[] gacAssemblies = GetGacAssemblies();
            foreach (Assembly assembly in gacAssemblies)
            {
                Console.WriteLine($"Name: {assembly.FullName}, Location: {assembly.Location}");
            }
            Console.ReadLine();
        }

        private static Assembly[] GetGacAssemblies()
        {
            string gacPath = @"C:\Windows\assembly\";
            var directory = new DirectoryInfo(gacPath);
            List<Assembly> assemblies = new List<Assembly>();

            foreach (var pkg in directory.GetDirectories())
            {
                var assemblyDirs = pkg.GetDirectories("GAC_MSIL");
                if (assemblyDirs.Any())
                {
                    foreach (var assemblyDir in assemblyDirs)
                    {
                        var assemblyFiles = assemblyDir.GetFiles("*.dll");
                        if (assemblyFiles.Any())
                        {
                            foreach (var assemblyFile in assemblyFiles)
                            {
                                try
                                {
                                    Assembly assembly = Assembly.LoadFrom(assemblyFile.FullName);
                                    assemblies.Add(assembly);
                                }
                                catch (Exception ex)
                                {
                                    Console.WriteLine($"Unable to load assembly {assemblyFile.FullName}: {ex.Message}");
                                }
                            }
                        }
                    }
                }
            }
            return assemblies.ToArray();
        }
    }
}

这段代码首先获取GAC的程序集路径,然后遍历所有程序集,尝试加载它们,将找到的程序集添加到结果列表中,并在控制台上输出相关信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • WiX安装选项--注册程序集到GAC和VS的设计时环境

    Visual Studio的设计时引用组件的窗口中看到的程序集的位置和程序集的运行时位置是不一样的,特别是在全局程序集缓存(GAC)中的程序集,通过WiX制作Winodws安装程序的时候需要处理这个区别...VS的设计时的添加引用窗口看到的程序集的位置来自注册表SOFTWARE\Microsoft\.NETFramework\AssemblyFolders – 放在HKEY_LOCAL_MACHINE 下面就是针对所有的用户...WiX要把一个程序注册到GAC,只需要在File 上增加一个选项 Assembly=".net" 就可以了,但是注册到GAC的dll不会放到安装目录下方了,这就需要通过提供两个Component方式来处理..." Name="GAC"> GAC --> <File Id="F_RT_GACTEST" LongName="GACTest.dll" Source=

    69160

    如何获取对方IP,查询对方的位置

    那么对方的IP地址该如何搜查得到呢?这样的问题你也许会嗤之以鼻,的确,查询对方计算机的IP地址,实在简单得不值得一提;可是,要让你列举出多种IP地址搜查方法时,你可能就感到勉为其难了。...下面,本文就对如何快速、准确地搜查出对方好友的计算机IP地址,提出如下几种方法,相信能对大家有所帮助!...例如,借助一款名为WhereIsIP的搜查工具,你可以轻松根据对方好友的Web网站地址,搜查得到对方好友的IP地址,甚至还能搜查到对方好友所在的物理位置。...在用WhereIsIP程序搜查对方IP地址时,首先启动该程序打开搜查界面,然后单击该界面的“Web site”按钮,在其后的窗口中输入对方好友的Web地址,再单击“next”按钮,这样该程序就能自动与Internet...当然,除了可以知道IP地址外,你还能知道对方好友所在的具体物理位置。

    6.8K30

    微信小程序如何获取地理位置和进行地图导航

    一.获取地理位置 由于小程序只提供了我们一个获取地理位置、速度的api,并没有获取的相关地位位置的信息等,我们利用百度地图的api来获取地位位置。...,在模拟器所获取到的定位是有一些误差的,如需测试真正的地理位置信息,还需要使用真机测试!!!...结果 二.进行地图导航 微信小程序里面是不能导航的,原因是小程序的代码最多只能有1M,他的运行内存只能有10M,一个区域地图下载下来就不止1M了所以在应用内我们无法做到导航的,但是应用外呢!...关于APP开发,一般如果导航这个功能不是很重要的话就会放到应用外来做这个功能,但是高德地图和腾讯地图都会有响应的SDK,可是小程序不同,我们该如何在小程序外调用导航功能呢?...打开小程序中关于位置的API, 1.wx.getLocation(OBJECT) 获取当前的地理位置、速度。 2.wx.chooseLocation(OBJECT) 打开地图选择位置。

    4.9K50

    如何获取小程序的源代码

    下图中,很长的这种文件夹是具体的微信小程序文件夹,可以看到我这边有三个,那到底哪个是我要找到的呢?...可以参考日期,也就是你第一次打开这个小程序的日期(或者这个小程序更新的日期)如果无法确定的话,也可以把所有的文件夹的小程序源代码弄出来。。。...(也就是具体源代码位置 输入 ls -ll 找到时间为最近并且后缀是wxapkg的文件 cp _1123949441_93.wxapkg /sdcard/ (把刚才找到的文件copy到根目录.../jin10086/wxgameHacker/blob/master/wxapkg_unpack.py 下载 这个python文件(python3的) 然后修改代码,把fname修改成 小程序的位置(也就是上面...copy到本地的位置) 然后就是执行这个python文件 python wxapkg_unpack.py 然后就可以看到已经生成源代码了 总结 上面,我们就已经获取到微信小程序的源代码了,至于后续怎么做

    4.6K140

    仅反射加载(ReflectionOnlyLoadFrom)的 .NET 程序集,如何反射获取它的 Attribute 元数据呢?

    平时我们获取一个程序集或者类型的 Attribute 是非常轻松的,只需要通过 GetCustomAttribute 方法就能拿到实例然后获取其中的值。...但是,有时我们仅为反射加载一些程序集的时候,获取这些元数据就不那么简单了,因为我们没有加载目标程序集中的类型。 本文介绍如何为仅反射加载的程序集读取 Attribute 元数据信息。...---- 仅反射加载一个程序集 使用 ReflectionOnlyLoadFrom 可以仅以反射的方式加载一个程序集。...Desktop\Walterlv.Extension.dll"; var assembly = Assembly.ReflectionOnlyLoadFrom(extensionFilePath); 获取程序集的...Attribute(例如获取程序集版本号) Assembly.GetCustomAttributesData() 得到的是一个 CustomAttributeData 的列表,而这个列表中的每一项都与普通反射中拿到的特性集合不同

    2.3K30

    C# Assembly

    GAC是什么? GAC,全称为全局程序集缓存(Global Assembly Cache),是.NET框架提供的一个用于存储共享Assembly的特殊文件夹。...托管代码的开发人员一般情况下不应调用它,因为调用 AppDomaim 的Load 方法时需要传递一个标识了程序集的字符串。该方法随后会应用策略,并在一些常规位置搜索程序集。...我们知道,AppDomain 关联了一些告诉 CLR如何查找程序集的设置。为了加载这个程序集,CLR 将使用与指定AppDomain 关联的设置,而非与发出调用之AppDomain 关联的设置。...如果使用发出调用的那个 AppDomain 的策略和搜索位置找不到指定的程序集,就会抛出一个 FileNotFoundException。...强烈建议每次生成程序集时都更改版本号,确保每个版本都有自己的唯一性标识,确保LoadFrom方法的行为符合预期。

    8010

    .NET 5的重大改变:消失的历史技术

    全局程序集缓存 全局程序集缓存(GAC)背后的理论是,所有.NET 库都可以存储在单个集中的位置。在这种方式下,它与 COM 库类似。但与 COM 不同的是,它可以存储每个库的多个版本。...此外,获得代码签名证书的需要以及 Windows Vista 带来的安全性的增加使得 GAC 成为一项令人讨厌的技术。到.NET 4.5 发布时,几乎没有应用程序将 GAC 用于非微软库。...尽管如此,GAC API 在.NET Core 中仍然存在。它们所做的事情不多,例如,指示程序集是否在 GAC 中的属性被硬编码为返回 false。...理论上,每个应用程序都将被隔离到一个单独的应用程序域中,但要打破这种隔离并干扰在 IIS 中运行的其他应用程序并不难。 代码访问安全的创建就是为了限制这种可能的损害。...在 ASP.NET 中,像请求超时或客户端断开连接这样简单的事情就会触发一个 Thread.Abort 调用。如果你没有认真地编写代码进行处理,这可能会导致资源泄漏,比如获取的锁或打开的数据库事务。

    44420

    解决T4模板的程序集引用的五种方案

    如果要了解T4具体的应用,则可以参考我的文章《创建代码生成器可以很简单:如何通过T4模板生成代码?》(上篇)(下篇)。如果你编写T4模板,你不得不面对一个问题——如何引用一个程序集?...目录 一、添加程序集引用解决不了问题 二、将引用程序集安装到GAC 三、利用VS的PublicAssemblies目录 四、指定程序集的具体路径...没错,这是一种解决方案,如果被引用的程序集具有强签名的话。有一点需要注意的是,T4模板引用某个安装于GAC的程序集的时候,在指令下不能指定文件扩展名(.dll)。...如果被引用的程序集被没有被签名,GAC的方式则不能使用,在这种情况下你需要指定程序集文件所在的位置,最直接的当然就是指定程序集文件的绝对路径。...,因为在团队开发中,每个开发人员用于存放同一个程序集的地址可能不同,在这种情况下你可以采用环境变量的方式。

    83870

    前端问答:如何获取字符串中每个单词的首字母?

    在开发过程中,我们经常会遇到需要从一组产品名称或用户输入中提取每个单词的首字母,并生成一个简洁的缩写的场景。这种缩写通常用于展示产品、生成订单编号或是用于标签等场景中。...今天,我们就来看看如何利用JavaScript轻松实现这一功能。 提取产品名称首字母生成产品代码 假设我们有一个电商平台,需要为每个产品生成一个简短的代码,这个代码由产品名称中每个单词的首字母组成。...让我们通过代码示例来演示如何实现这个功能: const productName = "Wireless Bluetooth Headphones"; const initials = productName.match...使用正则表达式 /\b(\w)/g,我们可以匹配每个单词的首字母。 match 方法会返回一个包含匹配结果的数组,join('') 方法将这些字母连接成一个字符串,即产品代码。...结束 通过使用JavaScript的正则表达式,我们可以轻松实现从字符串中提取每个单词首字母并生成缩写的功能。这种方法在实际业务场景中非常实用,特别是在需要简化文本展示或生成标识符的场合。

    9010

    java 两个数组求并集_Java程序获取两个数组的并集

    参考链接: Java程序来计算两个集合的并集 java 两个数组求并集   快速和编程指南,介绍如何使用示例程序在java中获得两个未排序数组的联合。   ...1.概述   在本文中,您将学习如何在java中获得两个数组的并集。 并集是两个集合或所有集合中的所有值。    我们可以使用带有数组的HashSet在Java中执行并集函数。...使用addAll()方法将每个数组的所有值添加到HashSet中。    这是一个简单的解决方案。 不仅如此,该解决方案还将适用于数字和字符串值。   ...2.两个带数字的整数数组的并集   让我们编写Java程序来打印两个整数数组的并集。   ...   让我们编写Java程序来打印两个String数组的并集。

    1.6K30

    关于强命名程序集

    如何创建强命名程序集(Strong Name Assembly)     创建一个强命名程序集首先需运维...强烈推介IDEA2020.2破解激活,IntelliJ IDEA 注册码,2020.2 IDEA 激活码 如何创建强命名程序集( Strong Name Assembly ) 创建一个强命名程序集首先需要获得一个用强命名实用工具...如何部署强命名程序集( Strong Name Assembly )和 GAC    a)GAC 的概念 如果一个 Assembly 要被多个应用程序访问,那么他就必须放在一个...GAC 的作用就是提供给 CLR 一个已知的确定的目录去寻找引用的 程序集。    ...1.0.0.0 程序集的程序,通过更改它的配置文件,转而让程序去引用版本为 2.0.0.0 的程序集)来使用新版本;最后, GAC 还提供了对不同版本程序集的并存( side-by-side

    64910

    怎样反射程序集?

    每个程序集都有自己的名称、版本等信息。这些信息可以通过AssemblyInfo.cs文件来自己定义。 5、使用程序集的好处? 1)、程序中只引用必须的程序集,减小程序的尺寸。...2)、程序集可以封装一些代码,只提供必要的访问接口。 6、如何添加程序集的引用?...1)、添加路径、项目引用、GAC(全局程序集缓存) 不能循环添加引用 在c#中添加其他语言编写的dll文件的引用。...还有反编译工具也是通过反射实现 2、反射就是动态获取程序集的元数据(提供程序集的类型信息)的功能 反射:就是动态获取程序集中的元数据来操作类型的。...如何获取Person类中的所有属性? 5、反射就是直接通过.dll来创建对象,调用成员。 先通过一个普通类介绍Type.

    53020

    IIncrementalGenerator 增量 Source Generator 生成代码入门 获取引用程序集的所有类型

    本文告诉大家如何在使用 IIncrementalGenerator 进行增量的 Source Generator 生成代码时,如何获取到当前正在分析的程序集所引用的所有的程序集,以及引用的程序集里面的所有类型...这项技术可以用在生成导出类型相关的需求上,比如我想导出我当前程序集里面所有引用的程序集的继承于 IFoo 接口的所有类型,即可采用本文介绍的方法 核心逻辑是在 Compilation 里面拿到 SourceModule...属性 这里的 ReferencedAssemblySymbols 属性就是当前的程序集所引用的程序集了 在这些程序集上枚举所有程序集内的语义类型即可获取到所有的类型 以下是详细的例子 为了方便描述本文的技术实现...,咱需要先从 context 里面的 CompilationProvider 获取到引用的程序集,代码如下 [Generator(LanguageNames.CSharp)] public class...就是引用的 Lib 程序集里面的所有类型。

    31620

    《CLR via C#》Part1之Chapter3 共享程序集和强命名程序集(二)

    由于弱类型程序集总是私有部署的,所以当CLR在应用程序的基目录或者子目录中搜索程序集的文件时,只会使用程序集的名称(添加一个.dll或者.exe)。...强类型程序集则是由一个文件名、一个版本号和一个语言文化(culture),除此之外,强命名程序集还使用发布者的私钥进行了签名。...创建强类型步骤: 使用Strong Name实用程序(SN.exe)来获取一个密钥。(这个程序与.NET Framework SDK和MS VS配套提供的。)Eg....全局程序集缓存 如果一个 程序集要由多个应用程序访问,必须把它放在一个已知的目录中,而且CLR在检测到对该程序集的一个引用时,必须知道自动检查该目录,这个已知的位置称为全局程序集缓存(Global...Assembly Cathe,GAC),对于.NetFramework 3.5和以前的版本,GAC通常放在以下目录,C:Windows\Assembly,而对于.Net4.0,GAC位于C:Windows

    51120
    领券