我有一个使用 IoC (windsor) 的解决方案。
解决方案中的项目如下:
- 接口 - 保存我将使用的所有接口合约。
- IoC.Installers - 保存我的依赖项的所有安装程序(参考实现和接口)
- IoC - 包含一个包含 IoC 容器的单例类。该类执行容器的初始化过程。
- 控制台 - 使用 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,你唯一的选择是
- 在 IoC 容器库中添加库的虚假用法;
- 添加构建后 XCOPY 步骤,将库复制到应用程序输出文件夹;
如果您选择#2并且不知道如何做,请查看MSBuild指南 http://msdn.microsoft.com/en-gb/library/dd393574.aspx了解如何编辑 MSBuild 脚本(您必须编辑<Target Name="AfterBuild" />
应用程序 .csproj 的元素)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)