更新09.08.2018
Unity正在开发中,但我还没有时间测试它如何与ASP.NET Core框架配合使用.
更新15.03.2018
此解决方案适用于在使用.NET Framework 4.5.2而不是 .NET Core Framework 时使用ASP.NET Core v1和Unity的特定问题.我不得不使用这个设置,因为我需要一些.Net 4.5.2 DLL,但对于任何重新开始的人我都不会推荐这种方法.此外,Unity还没有进一步开发(据我所知)所以我建议将Autofac框架用于新项目.有关如何执行此操作的详细信息,请参阅此帖子.
简介
我正在使用ASP.NET和MVC构建Web应用程序.此应用程序依赖于某些服务(WCF服务,数据存储区服务等).现在为了保持良好和解耦,我想使用DI(Dependecy Injection)框架,特别是Unity.
初步研究
我发现这篇博文,但遗憾的是它不起作用.这个想法虽然很好.
它基本上表示您不应将ServiceCollection中注册的所有服务注册到您自己的容器中,而应引用默认的ServiceProvider.
所以.如果需要解决某些问题,则调用默认的ServiceProvider,如果没有解析,则使用自定义UnityContainer解析类型.
问题
MVC总是尝试使用默认的ServiceProvider解析Controller.
此外,我注意到即使控制器得到正确解析,我也永远不会"混合"依赖关系.现在,如果我想使用我的一个服务而且还要使用ASP的IOptions接口,则该类永远无法解析,因为这两个容器中没有一个具有两种类型的解析.
我需要什么
所以回顾一下我需要以下几点:
编辑:
所以问题是如何实现这些要点?
我用Qt5.3.1编写了一个程序,并在我的开发机器上运行它可以正常工作.我将所有必需的.dll文件复制到我的.exe所在的文件夹中.这些是:
现在我想在没有安装Qt的机器上运行该程序.我怎么做?用户不必为了使用程序而安装IDE,对吗?
开发机器的工作原理:
部署平台是:
我得到的错误是第一个:
此应用程序无法启动,因为它无法找到或加载Qt平台插件"windows".重新安装应用程序可能会解决此问题.
下一条错误消息是:
此应用程序请求运行时以不寻常的方式终止.请联系支持.
然后程序崩溃了. 但是如果我安装Qt5.3.1就可以了.所以它是与文件的c:/Qt目录