gpt4 book ai didi

c# - 获取当前项目中所有引用的程序集

转载 作者:行者123 更新时间:2023-12-04 17:48:00 26 4
gpt4 key购买 nike

我正在尝试构建方法来检查所有非系统 dll 的 dll,并从 FTP 下载它们。例如,我引用了一些 devxpress DLL 和 newtonsoft (Json.net)。问题是当我尝试获取列表时,我只得到了其中的 16 个,而引用列表中还有更多。

List<string> moduli = new List<string>();
Assembly a = typeof(frmPostavkeDokumenata).Assembly;
Assembly assem =Assembly.GetEntryAssembly();

foreach (AssemblyName an in assem.GetReferencedAssemblies())
{
if (!an.Name.Contains("System") &&
!an.Name.Contains("mscorlib") && !an.Name.Contains("Microsoft"))
{
moduli.Add(an.Name);
}
}

这是我的引用列表:

enter image description here

最佳答案

当您在 visual studio 中编译您的项目时 - 只有您的项目实际使用的 dll 将作为引用的程序集编译到 dll\exe 元数据中,无论哪些列在“引用”部分中。

您有多种选择:

  1. 递归构建引用程序集的列表。这将为您提供应用程序使用的所有程序集及其依赖项使用的所有程序集的列表,这应该是您在运行时可能实际需要的 dll 的完整列表。

  2. 订阅 AppDomain.AssemblyResolve 事件并在那里提供缺少的 dll(更好的选择)。

关于c# - 获取当前项目中所有引用的程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469508/

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