首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Nuget中将Ninject升级到最新版本。

无法在Nuget中将Ninject升级到最新版本。
EN

Stack Overflow用户
提问于 2018-09-11 09:09:13
回答 1查看 1.7K关注 0票数 7

我有一个ASP.NET WebForms应用程序,它使用了一些Ninject包,但是我仍然停留在特定的版本上。当我试图升级到最新版本时,我会遇到“无法解决依赖关系”的问题。

所涉及的一揽子方案如下:

代码语言:javascript
复制
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的依赖行为还是不安全?如果我这样做了,我应该将依赖行为更改为什么?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-11 14:22:04

好吧,这就是如何修复:

  1. 完全删除Ninject.Web包。这个包不再需要了,因为它现在已经集成到Ninject.Web.Common中了(嗯,反正是v3.3+版本)。
  2. 更新包NinjectNinject.Web.CommonNinject.Web.Common.WebHost。现在应该可以升级了。对我来说,它们都是v3.3.1。
  3. 作为包升级的一部分,将添加一个新文件App_Start\Ninject.Web.Common.cs。这只是现有App_Start\NinjectWeb.Common.cs的一个重命名,所以要么删除新文件,要么迁移到Ninject模块注册,然后删除旧文件。
  4. 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
  5. 您也可以出于同样的原因(注册App_Start\NinjectWeb.cs )删除文件NinjectHttpModule
  6. 如果OnePerRequestHttpModuleApp_Start\Ninject.Web.Common.cs中没有解析,那么将下面的使用语句添加到文件using Ninject.Web.Common.WebHost;中(我认为这是包的v3.3.1中缺少的引用。

希望这对其他人有帮助。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52272485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档