我有一个ASP.NET WebForms应用程序,它使用了一些Ninject包,但是我仍然停留在特定的版本上。当我试图升级到最新版本时,我会遇到“无法解决依赖关系”的问题。
所涉及的一揽子方案如下:
Package InstalledVer LatestVer
------------------------------------------------------
Ninject v3.2.2 v3.3.4
Ninject.Web v3.2.1 ✔ v3.2.1
Ninject.Web.Common v3.2.3 v3.3.1
Ninject.Web.Common.WebHost v3.2.3 v3.3.1如果我尝试更新Ninject,我会得到:
无法解析依赖项。'Ninject 3.3.4‘与'Ninject.Web 3.2.1约束不兼容:>= 3.2.0 & not;3.3.0’
但是Ninject.Web已经在最新版本了!
我应该改变Ninject.Web的依赖行为还是不安全?如果我这样做了,我应该将依赖行为更改为什么?
谢谢
发布于 2018-09-11 14:22:04
好吧,这就是如何修复:
Ninject.Web包。这个包不再需要了,因为它现在已经集成到Ninject.Web.Common中了(嗯,反正是v3.3+版本)。Ninject、Ninject.Web.Common和Ninject.Web.Common.WebHost。现在应该可以升级了。对我来说,它们都是v3.3.1。App_Start\Ninject.Web.Common.cs。这只是现有App_Start\NinjectWeb.Common.cs的一个重命名,所以要么删除新文件,要么迁移到Ninject模块注册,然后删除旧文件。web.config中,现在应该删除OnePerRequestModule模块:
这是因为这个模块是在加载到App_Start\Ninject.Web.Common.cs文件的Start()方法中动态注册的:
公开静态空开始(){ DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule));DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule));bootstrapper.Initialize(CreateKernel);}
如果您不从web.config中删除这个条目,那么在启动应用程序时就会出现类型异常,尤其是因为作为版本更新的一部分,类已经从Ninject.Web.Common命名空间转移到了Ninject.Web.Common.WebHost。App_Start\NinjectWeb.cs )删除文件NinjectHttpModule。OnePerRequestHttpModule在App_Start\Ninject.Web.Common.cs中没有解析,那么将下面的使用语句添加到文件using Ninject.Web.Common.WebHost;中(我认为这是包的v3.3.1中缺少的引用。希望这对其他人有帮助。
https://stackoverflow.com/questions/52272485
复制相似问题