如何强制c#构建过程包含代码中未使用的程序集?

本文关键字:未使用 程序集 代码 包含 何强制 构建 过程 | 更新日期: 2023-09-27 18:04:03

我有一个名为Company.Application的应用程序。它确实使用了库:

  • 公司。InversionOfControl
  • Company.Functionality.Contracts
  • 公司。功能

应用程序使用InversionOfControl来查找组件应用程序域,使用:

appDomain.GetAssemblies()

问题是公司。应用程序从不引用来自Company的代码。function 直接,但依赖于 company . functions中定义的接口。合同公司。InversionOfControl来耦合公司定义的功能。功能并注入到Company中。应用

因此,有时应用程序的域看不到程序集Company。功能(即appDomain.GetAssemblies())

我的问题是-有没有办法强迫包括公司。功能 ?

如何强制c#构建过程包含代码中未使用的程序集?

我找到的唯一解决方案是做虚拟行,如:

var t = new[] {typeof(Company.Functionality.FirstClass)}
在公司

。应用程序的初始化。

这将强制编译器包含该程序集。但是,这需要管理这些行。

通常根应该知道建立上下文的所有内容。如果这是动态完成的,那么应该将IoC库参数化,以便通过代码将程序集加载到应用程序域。如果不是这种情况,你必须通过AppDomain.LoadFrom手动加载它。我看到的大多数容器都需要一个抽象和实现都被引用的地方,并且可以看到创建绑定。