所以我遇到了一个问题,就像我看到其他海报在使用NuGet安装FluentNhibernate之后已经有了:
错误
Could not load file or assembly 'NHibernate, Version=3.0.0.2001, Culture=neutral,
PublicKeyToken=aa95f207798dfdb4' or one of its dependencies. The located assembly's
manifest definition does not match the assembly reference. (Exception from HRESULT:
0x80131040)
我在stackOverflow回答和其他博客上看到答案是:
Add-BindingRedirect
但是,这还没有解决我的问题,运行该命令的所有结果都是:
PM> Add-BindingRedirect
Name OldVersion NewVersion
---- ---------- ----------
NHibernate 0.0.0.0-3.0.0.4000 3.0.0.4000
当我从NuGet安装Fluent Nhibernate时,它说它的依赖项是Nhibernate 3.0.0.2001但是它安装了Nhibernate 3.0.0.4000
我做错了什么?
更新
我看到它在节点中添加了以下部分:
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.0.0.4000" newVersion="3.0.0.4000" />
</dependentAssembly>
但是,我仍然得到同样的错误。哪个看起来不对劲。如果Fluent想要3.0.0.2001并且安装了NHibernate 3.0.0.4000,那么这个绑定重定向在我看来并不正确。
尽可能具体。我只是使用NuGet在我的Web项目和C#库项目中安装Fluent Nhibernate进行测试。然后使用NUnit运行测试,继续给我这个错误。
答案 0 :(得分:1)
Add-BindingRedirect是正确运行的命令,您获得的输出是预期的。运行它之后,您应该在web.config(或app.config)中看到一些绑定重定向条目。你能证实吗?
即使FluentNH要求使用旧版本的NHibernate,也可以加载程序集。
如果这对您不起作用,请在您的问题中包含有关您正在做的事情的更多详细信息。例如什么是导致看到您报告的错误的完整步骤序列(从项目创建开始)。
答案 1 :(得分:0)
我遇到了运行MSpec测试的不同包的问题。
我的解决方案是手动将app.config
文件添加到每个Web项目,并使用与Web.config
文件中相同的绑定重定向。
Add-BindingRedirect
命令已正确地将条目添加到Web.config
文件中,但显然测试运行器仅评估生成的Bla.Bla.dll.config
文件。
答案 2 :(得分:0)
听起来很愚蠢,但检查你的源文件和你的包源并检查那里没有对旧版本的引用 - 如果有删除所有版本并通过包管理器控制台重新下载你想要的版本。
编辑:确保检查所有文件,因为引用和绑定的工作原理可能会非常混乱,并且任何文件中的引用都可能导致绑定重定向或仍然是错误的版本。
答案 3 :(得分:0)
我遇到了同样的问题,我的网络服务正在运行,但BindingRedirect不能用于我的测试。
解决方案是将Add-BindingRedirect命令添加的配置从我的'project'.config文件复制到计算机的machine.config文件
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="NHibernate" publicKeyToken="aa95f207798dfdb4" culture="neutral" />
<bindingRedirect newVersion="3.3.1.4000" oldVersion="0.0.0.0-3.3.1.4000" />
</dependentAssembly>
</assemblyBinding>
</runtime>
一旦我复制了我的测试开始工作