M.K*_*ani 9 .net c# dll .net-assembly nuget
在一个项目中有几个对Ninject库的引用,它们有自己的版本,单元测试失败,错误:
消息:System.IO.FileLoadException:无法加载文件或程序集'Ninject,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = c7192dc5380945e7'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)---- System.IO.FileLoadException:无法加载文件或程序集'Ninject,Version = 3.2.0.0,Culture = neutral,PublicKeyToken = c7192dc5380945e7'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
1- csproj文件
<Reference Include="Ninject, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.3.2.2.0\lib\net45-full\Ninject.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
2- packages.config
<package id="Ninject" version="3.2.2.0" targetFramework="net462" />
Run Code Online (Sandbox Code Playgroud)
3- app.config
<dependentAssembly>
<assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
4-参考文件夹 - >展开 - >右键单击Ninject - >属性
Version: 3.2.0.0
Run Code Online (Sandbox Code Playgroud)
看起来像我的项目中的某个地方引用了版本4.0.0.0和3.2.0.0我只想引用版本3.2.2.0.
怎么做?
这些参考文献之间有什么区别?
Roy*_*y B 18
我知道这是一篇旧帖子,但我认为这种洞察力对解决问题非常有用.
在您的异常中,检查正在加载的程序集.该程序集需要它所依赖的特定版本的程序集,并且当它是不正确的版本时抛出异常.您很可能已降级依赖程序集.即使nuget包和引用可能是正确的,重要的是bin文件夹中的程序集.
清除解决方案/项目时,检查是否删除了所有程序集.如果不是,请删除所有尚未删除的内容.
对于ninject,问题很可能是在清理解决方案/项目时未被删除的Ninject.Web.Common.WebHost.它不是直接在项目中引用,而是复制到bin文件夹中.
我遇到了与您完全相同的版本号的问题。
Ninject 3.2.2.0 发生了一些奇怪的事情。
为我解决这个问题的方法是保留安装的 3.2.2 软件包。保留packages.config 并将app.config 更改为3.2.0.0。是的。这是正确的。不是到 3.2.2.0,而是到 3.2.0.0。这就是运行时异常所抱怨的,所以我想我应该尝试一下。
总结一下:
CSProj 文件:
<Reference Include="Ninject, Version=3.2.0.0, Culture=neutral, PublicKeyToken=c7192dc5380945e7, processorArchitecture=MSIL">
<HintPath>..\packages\Ninject.3.2.2.0\lib\net45-full\Ninject.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)
包.config:
<package id="Ninject" version="3.2.2.0" targetFramework="net452" />
Run Code Online (Sandbox Code Playgroud)
应用程序配置:
<dependentAssembly>
<assemblyIdentity name="Ninject" publicKeyToken="c7192dc5380945e7" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5444 次 |
最近记录: |