Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net Ninject程序集与引用的程序集不匹配_Asp.net_Ninject_Nuget_Project Reference_Assembly References - Fatal编程技术网

Asp.net Ninject程序集与引用的程序集不匹配

Asp.net Ninject程序集与引用的程序集不匹配,asp.net,ninject,nuget,project-reference,assembly-references,Asp.net,Ninject,Nuget,Project Reference,Assembly References,设置: ASP.NET MVC3 Ninject v2.2.1.4 Ninject v3.0.0.15 Ninject.MVC3 v3.0.0.6 Ninject.Web.Common v3.0.0.7 使用NuGet,我的UnitTest项目引用了Ninject v2.2.1.4 我的Web项目引用了Ninject v3.0.0.15、Ninject.MVC3和Ninject.Web.Common 问题: 当win explorer在我的web项目的bin文件夹中打开时,我构建了我的解决方

设置:

  • ASP.NET MVC3
  • Ninject v2.2.1.4
  • Ninject v3.0.0.15
  • Ninject.MVC3 v3.0.0.6
  • Ninject.Web.Common v3.0.0.7
使用NuGet,我的UnitTest项目引用了Ninject v2.2.1.4

我的Web项目引用了Ninject v3.0.0.15、Ninject.MVC3和Ninject.Web.Common

问题:

当win explorer在我的web项目的bin文件夹中打开时,我构建了我的解决方案,我可以看到Ninject v2.2.1.4被复制到我的web项目的bin目录中。然后被Ninject v3.0.0.15取代

当我点击F5进行调试时,Ninject.dll v3.0.0.15被替换为Ninject v2.2.1.4,导致以下错误:

无法加载文件或程序集“Ninject,版本=3.0.0.0,区域性=中性,PublicKeyToken=c7192dc5380945e7”或其依赖项之一。定位的程序集清单定义与程序集引用不匹配。(来自HRESULT的异常:0x8013100)

给了我们什么?

一些想法:

  • 只有在调试版本中,您才间接引用了 v2 9对象版本。举个例子,我猜你在做什么 调试生成在发布生成时生成测试项目 不生成测试项目
  • 当您正在构建时,您是否注意到当v2 DLL被放置在bin中时正在构建哪个项目?那你就会 能够找出哪个项目引用了v2构建并可以 能够缩小搜索范围(即,如果不是测试项目,答案会变得更加明显)
  • 在不同的项目中引用多个版本从来都不是一个好主意
  • 你检查过你的Web.config和App.config引用指向什么了吗

  • 因此,我只是从包列表中删除了Ninject v2.2.1.4。运行/调试时,解决方案v3.0.0.15将保留。我的问题解决了,但我希望我能理解或知道为什么它会被覆盖。我仔细审查了所有参考文献,v2.2.1.4在任何地方都没有被引用。我甚至手动引用了v3 dll,但没有用,调试时总是将v2复制到ovwer。如果我做了一个构建,v3将被复制。。。如果这对其他人没有帮助,我会道歉,但如果有人知道答案,我很想知道。蒂亚。。。