gpt4 book ai didi

c# - 如何在 .NET Compact Framework 中获取所有已加载程序集(引用)的编程列表

转载 作者:太空狗 更新时间:2023-10-29 23:19:35 25 4
gpt4 key购买 nike

我在 Windows CE 上运行并使用 Compact Framework。我需要获取我的应用程序已加载的所有引用程序集的列表。如果能够获取这些程序集的 AssemblyName(对象)就好了。

一个例子就像通过执行以下操作来获取正在运行的程序集:Assembly.GetExecutingAssembly();除了我需要获取对所有其他已加载程序集(第 3 方 Dll)的引用。

完整的框架有 Assembly.GetExecutingAssembly().GetReferencedAssemblies()方法,但它在 Compact Framework 上不可用。任何帮助将不胜感激。

最佳答案

基于 this从它们在传统框架中的意义上讲,托管 dll 似乎并未真正“加载”。相反,IL 是内存映射的,JIT 只是在运行时获取它需要的东西(节省了为已执行但不再使用的代码维护内存负载的麻烦)

这可以解释为什么 CF 没有提供迭代加载的 dll 的方法。至于为什么它不允许迭代 referenced dll 这是一个完全符合时间的构造...

作为一种可能的解决方法:
使用 GetExecutingAssembly获取事件代码。确保这发生在您的可执行文件中,以便它获取根程序集。

编写一些能够解析 dll 的代码以指示引用了哪些程序集(这不需要是托管代码 - 微软提供的非托管内省(introspection) API 甚至可以为您执行此操作,并且 dll 格式规范既公开又不太可能在不久的将来彻底改变)。我建议将从 GAC 加载的 dll 列入黑名单(尽管这可能是不必要的)。

关于c# - 如何在 .NET Compact Framework 中获取所有已加载程序集(引用)的编程列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/940885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com