Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制C#构建过程包含代码中未使用的程序集_C#_Dependency Injection_Msbuild_Inversion Of Control - Fatal编程技术网

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

如何强制C#构建过程包含代码中未使用的程序集,c#,dependency-injection,msbuild,inversion-of-control,C#,Dependency Injection,Msbuild,Inversion Of Control,我有一个叫Company.application的申请。它确实使用库: 公司控制 公司、功能、合同 公司功能 应用程序使用InversionOfControl通过以下方式搜索部件零件应用程序域: appDomain.GetAssemblies() 问题是Company.Application从不直接引用Company.Functionality中的代码,而是依赖于Company.functional.Contracts和Company.InversionOfControl中定义的接口来耦合

我有一个叫Company.application的申请。它确实使用库:

  • 公司控制
  • 公司、功能、合同
  • 公司功能
应用程序使用InversionOfControl通过以下方式搜索部件零件应用程序域:

appDomain.GetAssemblies()
问题是Company.Application从不直接引用Company.Functionality中的代码,而是依赖于Company.functional.ContractsCompany.InversionOfControl中定义的接口来耦合定义的Company.Functionality并将其注入公司应用程序

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


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

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

var t = new[] {typeof(Company.Functionality.FirstClass)}
在公司中。应用程序的初始化


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

通常,根用户应该知道构建上下文的所有内容。如果这是手动完成的,则应参数化IoC库,以便通过代码将程序集加载到应用程序域。如果不是这种情况,则必须通过AppDomain.LoadFrom手动加载。
我看到的大多数容器都需要一个引用抽象和实现的位置,并在其中可见以创建绑定。

您所说的“添加到最终捆绑包”是什么意思?请使用生成后复制命令。看到这个问题了吗?这是一个ClickOnce应用程序吗?@Kevin还是只需将构建目录设置为
公司的bin文件夹。应用程序
编辑了原始帖子。我所说的“添加到最终捆绑包”是指appDomain.getAssemblys()不列出公司。功能程序集,即使在项目中被引用。如果客户端程序集必须直接引用实现程序集,这将违背IoC的目的。@MickyDuncan我不会说它违背了IoC的目标,但这是一个不需要的讨厌的黑客行为。事实上,这是不好的,这是使用它的主要原因邮寄。然而不幸的是,这似乎是匿名使用程序集的唯一原因将是AppDomain的一部分。显式引用的问题是“管理引用”的要求。