加载所有引用的程序集 .NET,即使未在代码中显式使用

2024-01-12

我们有一个使用 Autofac 的 Windows 服务,当我们尝试加载引用的程序集时,并非所有程序集都被列为我们在应用程序中任何地方都没有使用的某些包含对象,但我们需要包含接口实现。以下方法加载程序集:

private IEnumerable<Assembly> GetReferencedAssemblies(Assembly assembly)
{
  var assemblyNames = assembly.GetReferencedAssemblies();

  List<Assembly> assemblies = new List<Assembly>();
  assemblies.Add(assembly);
  foreach (var item in assemblyNames)
  {
    var loadedAssembly = System.Reflection.Assembly.Load(item.FullName);
    assemblies.Add(loadedAssembly);
  }

  return assemblies;
}

如果我们对程序集中包含的对象进行虚拟引用,则它将加载程序集并由 autofac 构建类型,如果我们删除虚拟对象,则不再包含程序集。

有没有办法包含所有引用的程序集,无论您是否直接使用其中的对象(记住我们仍然需要它,因为接口实现在那里)。

这在 ASP.NET 上运行良好,因为它只加载 bin 中的所有 DLL。


如果您实际上没有引用程序集中的类型,编译器将删除该引用,因为它被认为是多余的。您需要使用手动将所需的程序集加载到AppDomain中Assembly.Load()。如何确定要加载的程序集取决于您。您可以选择查看特定文件夹中的文件,也可以使用包含程序集名称的配置文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加载所有引用的程序集 .NET,即使未在代码中显式使用 的相关文章

  • Autofac 与 Owin

    我有一个问题Autofac 该文档明确指出 当使用 Web API 2 和 OWIN 时 您must not use GlobalConfiguration Configuration任何地方 OWIN 集成中的一个常见错误是使用 Glob
  • 动态替换 C# 方法的内容?

    我想要做的是更改 C 方法在调用时的执行方式 以便我可以编写如下内容 Distributed public DTask
  • ASP.net Session_Start 方法中的依赖注入

    我正在学习依赖注入并第一次使用 autofac 我按照几个 autofac 示例 见下文 中提到的方式构建了容器 并从我的 application start 调用 public class ContainerConfig public s
  • 我可以使用 Moq 集成在 UnitTests 中访问 Autofac 的全部功能吗

    我的项目 它发生在Orchard http www orchardproject net 虽然我不think这是相关的 使用Autofac https github com autofac Autofac 我正在编写单元测试 其中我想使用以
  • Autofac - 动态解析带有参数的组件

    我有一个类 它采用接口作为构造函数参数 该接口有两种实现 我想根据变量决定在运行时使用哪种实现 问题是上面的类位于由 Autofac 解决的对象层次结构深处 因此我无法传入参数 我想要实现的目标如下所示 public interface I
  • 每次应用程序启动时使用 Autofac 注册操作

    我正在使用 MVC 和 Autofac 我想注册每个应用程序启动时运行一次的操作 我想要实现某事 像这样 public class SomeModule IOnceRunnable private IService service publ
  • 从 Iron Python 生成 .NET 程序集

    我有一个 Iron Python 脚本 我想运行它 然后让 ipy 解释器输出一个可以在其他计算机上运行的程序集 我怎么做 是否有一个开关可以传递给 ipy exe 使用SharpDevelop 一种方法是使用夏普开发 http www i
  • Autofac 在 Web.Config 上丢失注册编辑

    我有一个使用 ASP NET MVC 4 WebAPI 和其他一些组件构建的分层 Web 应用程序 我使用最新版本的 Autofac 2 6 2 859 作为我的 DI 容器以及 MVC 和 WebAPI 集成 我在不同的层中设置了 aut
  • 如何在 MVC Core 和 AutoFac 中使用属性注入

    我可以在 MVC Core 中轻松使用构造函数参数注入 但不支持属性注入 我尝试使用 AutoFac 但也失败了 那么如何在MVC Core中使用属性注入 这是 AutoFac 的代码 services AddMvc ContainerBu
  • Autofac - 解决多线程环境中的依赖关系

    public class MultithreadTester public void Run var builder new ContainerBuilder builder RegisterType
  • 创建您自己的 .NET 程序集缓存

    在我正在编写的 net 应用程序中 我需要在本地缓存各个位置的程序集 以便即使原始位置不可用 我的应用程序也可以使用它们 我无法使用 GAC 主要是因为我想要可移植性 而且还因为程序集可能未签名 有谁知道任何支持此功能的 net 代码吗 我
  • 无法使用 AutoMapper 4.2 和 Autofac 解析 AutoMapper.IMapper

    我已经尝试了各种排列 但我当前的配置 因为它与 AutoMapper 相关 如下所示 builder RegisterAssemblyTypes AssignableTo typeof Profile As
  • 访问 SSIS 脚本任务静态构造函数中的可配置值

    我有一个 SSIS 包 其中包含需要第 3 方程序集的脚本任务 由于不允许我将此程序集放置在 SSIS 服务器上的 GAC 中 因此我在运行时在脚本任务的静态构造函数中绑定该程序集 这article https blogs msdn mic
  • .NET 程序集差异/比较工具 - 有什么可用? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我希望能够在两个程序集之间进行代码级差异 Reflector 的 Diff 插件是迄今为止我发现的最接
  • 链接 .Net 程序集

    这都是假设 所以请耐心等待 假设我正在用 C 编写一个名为 Foo 的工具 输出是 foo exe 我发现了一些我喜欢使用的非常棒的库 称为 Bar 我可以在我的项目中将其引用为 bar dll 当我构建项目时 我的输出目录中有 foo e
  • log4net 配置[程序集:]

    我很好奇以下行如何在程序集中配置 log4net assembly log4net Config XmlConfigurator Watch true 我猜这会在运行时调用 main 之前的某个时间被调用 但是这种情况什么时候发生 有什么影
  • 如何将外部程序集的类型添加到工具箱控件? (WPF)

    我正在尝试在我的 WPF 应用程序中执行类似的操作 ToolboxControl ctrl new ToolboxControl Assembly assembly Assembly LoadFile file var category n
  • 动态菜单创建IoC

    我想知道是否有人知道我如何创建如何使用 AutoFac 之类的东西来让我动态地允许 dll 创建自己的表单和菜单项以在运行时调用它们 所以如果我有一个 员工 dll 新入门表格 证书表格 供应商 dll 供应商详细信息来自 产品形态 在我的
  • 检索 Autofac 容器以解析服务

    在 C WindowForms 应用程序中 我启动一个 OWIN WebApp 它创建另一个类 Erp 的单例实例 public partial class Engine Form const string url http 8080 49
  • Autofac 3 和 Automapper

    有谁知道使用 Autofac 设置 Automapper 的综合指南 我对两者都是新手 但我已经使用过静态 Mapper 类 但是我希望能够模拟和注入 IMappingEngine 并创建一个设置所有映射的配置 到目前为止 我看过的所有指南

随机推荐

  • Android ListView 项目在滚动时重叠

    我已经实施了一个ListView在我的应用程序中使用自定义实现CursorAdapter 我的问题是 每当我快速滚动到列表底部 启动应用程序后 有时我会发现所有绘制的 ListView 项目都相互重叠 如果我向后滚动或触摸其中一项 它们就会
  • 为什么我的数组无法正确打印? [复制]

    这个问题在这里已经有答案了 我正在尝试使用下面的代码编写一个简单的程序来创建一个一维数组 然后您可以使用索引号调用一个值 我在用java questions tagged java and eclipse questions tagged
  • 如何计算带有集合的列表中项目的出现次数?

    假设我有一个List
  • 如何在不停止单元格选择动画的情况下重新加载 UITableView

    当用户点击某个单元格时 我想更新我的UITableView 包括这个被点击的单元格的内容 最简单的方法是更新内部参数然后调用 self tableView reloadData 然而 reloadData立即停止我点击的单元格的漂亮的蓝色
  • QString 到 unicode std::string

    我知道有很多关于转换的信息QString to char 但我仍然需要对这个问题进行一些澄清 Qt提供QTextCodecs 要转换QString 内部以 unicode 形式存储字符 QByteArray 允许我检索char 它表示某种非
  • 推送到 CI 服务器内的 GitLab 存储库(部署密钥)

    GitLab 有这个很好的 部署密钥 功能 对于 CI 服务器读取和提取对存储库的访问权限非常有用 因为它们通常不需要更多功能 但是 我需要创建一个标签并将其推送到存储库 以标记从 master 分支构建的每个版本 更具体地说 我有一个 J
  • 字符串操作。查找 2 个索引之间的字符串

    给定一个字符串 例如 500 个字符 我想在索引 400 和索引 430 之间选择一个字符串 怎么写这样的函数呢 Thanks Use the string Substring http msdn microsoft com en us l
  • 将动态对象传递给角度模块的 forRoot()

    我正在使用该包ngx cookieconsent它将模块导入为 const cookieConfig NgcCookieConsentConfig cookie domain localhost theme block content po
  • SSIS foreach 与简单对象列表

    re SSIS http en wikipedia org wiki SQL Server Integration Services Foreach http msdn microsoft com en us library ms14172
  • 如何为一系列日期设置 Slack 提醒

    例如 我希望每天在我休息的日子里在特定频道中出现提醒 就像是 remind channel me will be on PTO 1 1 2016 until 1 5 2016 然后 在该范围内的每一天 频道中都会出现一条提醒 说明日期范围
  • Html 5视频标签和编解码器问题

    我有一个 mkv 文件 它的视频编解码器是avc 音频编解码器是ac3 如何将其放入 html5 视频标签中 我用
  • MsgWaitForMultipleObjects 的 C# 等效项是什么?

    我有一个带有报表模式 ListView 的 Windows 窗体 对于视图中的每个项目 我需要执行长时间运行的操作 其结果是一个数字 我在本机 win32 中执行此操作的方法是为每个项目创建一个工作线程 天真地 当然我不会创建无限数量的线程
  • 如何使用 Selenium 获取 Chrome 浏览器控制台日志 [INFO] 条目

    我在使用 Selenium 获取 chrome 浏览器控制台日志 INFO 条目时遇到问题 我收到的唯一级别类型的条目是错误 警告 严重 有没有办法获得与错误条目不同的内容 因为我需要获取 INFO 条目并根据其内容断言 我最近读到 Sel
  • 查找 C 程序中内存泄漏的最佳方法

    我正在尝试完成一项大学作业 评分标准指定 5 用于内存管理 特别是没有内存泄漏 据我了解 简单 C 程序中的内存泄漏仅是由程序放弃的指针引起的 即 malloc calloc etc 调用永远不会有相应的调用free 我的问题分为三部分 S
  • 如何在Linux shell脚本中更改文件扩展名?

    我发现了一些在类似情况下执行此操作的示例 但这是我编写的唯一除了逐字运行命令之外执行任何操作的 shell 脚本 因此我正在努力将这些示例应用到我自己的情况中 并且需要一些手工操作持有 我只是想从 MP4 中批量抓取音频 该脚本的工作原理
  • JavaScript:避免硬编码键码[重复]

    这个问题在这里已经有答案了 可能的重复 JavaScript event keyCode 常量 https stackoverflow com questions 1465374 javascript event keycode const
  • 制作自定义类 IQueryable

    我一直在使用 VS2010 的 TFS API 并且必须查询 FieldCollection 我发现 LINQ 不支持它 所以我想创建一个自定义类以使 Field 和 FieldCollection 可通过 LINQ 查询 所以我找到了一个
  • SELECT WHERE ...数百个条件

    有没有一种优雅的方法来做到这一点 SELECT Cols from MyTable WHERE zip 90210 OR zip 23310 OR zip 74245 OR zip 77427 OR zip 18817 OR zip 945
  • 在 F# 中,如何将类型名称作为函数参数传递?

    我想传递一个类型名称 例如int or string 甚至用户定义类型的名称 作为函数参数 目前我正在做以下事情 type IntegerOrIntegerList Integer of int IntegerList of int lis
  • 加载所有引用的程序集 .NET,即使未在代码中显式使用

    我们有一个使用 Autofac 的 Windows 服务 当我们尝试加载引用的程序集时 并非所有程序集都被列为我们在应用程序中任何地方都没有使用的某些包含对象 但我们需要包含接口实现 以下方法加载程序集 private IEnumerabl