删除了 C# 和 IoC 传递依赖项

2024-04-05

我有一个使用 IoC (windsor) 的解决方案。 解决方案中的项目如下:

  1. 接口 - 保存我将使用的所有接口合约。
  2. IoC.Installers - 保存我的依赖项的所有安装程序(参考实现和接口)
  3. IoC - 包含一个包含 IoC 容器的单例类。该类执行容器的初始化过程。
  4. 控制台 - 使用 IoC 解决依赖关系的项目(引用 IoC 接口)

问题:由于 IoC 项目不直接使用 IoC.Installers 项目,因此在 Console 项目的构建过程中省略了它,因此在初始化过程中找不到安装程序。

解决方法:在 IoC 项目中,我添加了一个静态构造函数,该构造函数直接从 IoC.Installers 项目启动安装程序并使用它(我在我创建的实例上执行 GetType() )

问题解决方法:我想创建一些通用的容器支架,我可以从一个解决方案转移到另一个解决方案,而无需修复我的黑客行为。

有没有更好的方法来强制将 IoC.Installers dll 复制到 bin 文件夹而不需要 hack? 最终目标是创建一个 nuget 包裹 castlewindsor 并尝试找到解决方案中的所有安装程序并安装它们

我正在添加一个链接到 git 存储库 https://bitbucket.org/nocgod/iocproblemdemo/src我在其中创建了一个重现问题的项目(它也包含解决方法)

Thanks!


正如中所讨论的“复制本地”对于项目引用是否具有传递性? https://stackoverflow.com/q/26163368/91696,你唯一的选择是

  1. 在 IoC 容器库中添加库的虚假用法;
  2. 添加构建后 XCOPY 步骤,将库复制到应用程序输出文件夹;

如果您选择#2并且不知道如何做,请查看MSBuild指南 http://msdn.microsoft.com/en-gb/library/dd393574.aspx了解如何编辑 MSBuild 脚本(您必须编辑<Target Name="AfterBuild" />应用程序 .csproj 的元素)。

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

删除了 C# 和 IoC 传递依赖项 的相关文章

随机推荐

  • 使用 Javascript 跨浏览器处理“Enter”键按下

    我有以下示例 可以轻松检测到 Enter 键按下并正确处理它 这里是
  • bookshelf.js 计数方法

    我一直在寻找如何使用 Bookshelf js 进行基本计数 例如 SELECT COUNT something FROM table 但无济于事 我有什么遗漏的吗 或者它只是与手动选择查询一起使用 Thanks 目前这是一个手动查询 例如
  • 通过 Powershell 关闭时无法停止所有 Excel 进程

    使用此代码 我打开 excel 使用visible false 以便用户看不到它 写入工作簿 然后在脚本结束后打开 excel 使其可见 或完全关闭它而不保存 当我保存 Excel 使其保持打开状态 结束脚本 然后稍后手动关闭 Excel
  • 如何将 JavaScript 中的数字除以任意精度(例如小数点后 28 位)

    我知道https floating point gui de https floating point gui de 事实上 有许多库可以帮助处理大数 但令人惊讶的是 我找不到任何可以处理除法运算结果中小数点后 19 位以上的库 我花了几个
  • 在 Windows 中批量将 cp1252 转换为 utf-8

    所以 我一直在尝试使用我在网上找到的提示和矩阵 将大型java源代码树从cp1252转换为Windows中的UTF 8 特别是here https stackoverflow com a 9310774 问题是 我在 Windows 上 我
  • 将 Select 语句放在 Hibernate 事务上

    我已经阅读了一段时间有关 Hibernate 的内容 但我似乎无法理解有关 Hibernate 的一个概念Transaction 在我访问过的一些网站上 Select语句处于事务模式是这样的 public List
  • 使用短语构建语料库

    我的文件如下 doc1 very good very bad you are great doc2 very bad good restaurent nice place to visit 我想让我的语料库与 这样我的最后DocumentT
  • 将点云转换为深度/多通道图像

    我有一个通过使用立体相机扫描平面生成的点云 我已经生成了法线 fpfh 等特征 并使用这些信息我想对点云中的区域进行分类 为了能够使用更传统的 CNN 方法 我想将此点云转换为 opencv 中的多通道图像 我将点云折叠到 XY 平面 并与
  • 如何在 Safari HTML5 中启用表格行的重影效果?

    当我拖动项目时没有重影效果 table行 在 Safari 上 我用table所以这是一个tr 幻影效果是指您可以看到跟随鼠标移动的项目 在 Chrome FF 上它可以工作 有人知道为什么吗 我注意到它不仅在tr td 如果我使用li o
  • RSA 加密 AES 密钥的强度

    我目前正在开发一个在客户端和服务器之间传输数据的系统 并且想知道我计划使用的加密强度是多少 我的想法是拥有一个私钥 公钥 RSA 密钥对 并将公钥分发给每个客户端 将私钥仅保留在服务器上 然后 每个客户端将生成自己的 AES 密钥并使用 R
  • 绝对定位与固定定位

    我有一个自定义对话框 当我单击按钮时会显示该对话框 显示对话框后 我会显示一个覆盖图 覆盖层的高度和宽度为100 x 100 问题来了 高度 100 只是获取浏览器窗口的高度 所以当我在页面上向下滚动时 它仍然位于顶部 如何将其高度设置为整
  • 如何获取C中最右边设置位的位置

    int a 12 例如 12 的二进制是 1100 所以答案应该是 3 因为设置了右起第 3 位 我想要最后一个最设置位的位置a 谁能告诉我该怎么做 NOTE 我只想要位置 在这里我不想设置或重置该位 所以它与 stackoverflow
  • 如何对我的方法输入参数设置验证约束?

    以下是实现此目标的典型方法 public void myContractualMethod final String x final Set
  • Android:带有 com.android.email 的 ACTION_SEND_MULTIPLE

    我正在尝试将 Intent 中的多个附件发送到电子邮件应用程序 而不是 Gmail 应用程序 我在用着 Intent emailIntent new Intent android content Intent ACTION SEND MUL
  • 在 docker exec 命令中使用“*”

    我正在尝试在运行的 docker 容器中运行特定命令 Docker exec t containername1 ls tmp sth 作为回报我收到 ls cannot access tmp sth No such file or dire
  • 伊莎贝尔语中“case _ of _”是什么意思

    在读的时候这个关于商类型的答案 https stackoverflow com a 67237629 14656198 我偶然发现了这个结构 case of 经检查手册 https isabelle in tum de doc isar r
  • Bootstrap - 谁能给我任何例子,如何设置 JS 按钮?

    我正在玩 Bootstrap有状态按钮 http twitter github com bootstrap javascript html buttons 特别是与加载状态 但仍然找不到正确的设置来使其正常工作 我有一个基于 AJAX 的简
  • tcl 暂停并等待按键继续

    我正在 tcl 中寻找一种方法来暂停脚本 例如在使用 puts 进行一些输出之后 并等待用户按下按键 然后再继续输出剩余的文本 你只需使用gets从标准输入读取 proc pause message Hit Enter to continu
  • 如何定义正则表达式(preg_replace)以删除数字字符之间的空格

    我有这样的字符串 str old iccid 809831 3245 345 new iccid 999000 112221 如何定义正则表达式以删除 PHP 中数字字符之间的空格字符 成为此输出 output old iccid 8098
  • 删除了 C# 和 IoC 传递依赖项

    我有一个使用 IoC windsor 的解决方案 解决方案中的项目如下 接口 保存我将使用的所有接口合约 IoC Installers 保存我的依赖项的所有安装程序 参考实现和接口 IoC 包含一个包含 IoC 容器的单例类 该类执行容器的