我有一个使用NHibernate.dll的项目。我们将项目移至使用.Net Framework 4.0。我们使用FxCop和FxCop启动失败并出现错误
无法解析程序集Nhibernate.dll所以我的猜测是,如果我可以移动NHibernate.dll移动到.Net Framework 4.0,这将成功。
我试过,它给出了100个错误,关于我使用的ISet是System。**还是Ies.Collections.Generic。我使用了Ies.Collection.Generic,因为Nhibernate有一个对它的引用。
我成功地将其迁移到.Net 4.但是当我访问我的Web应用程序时,我得到了以下消息。
Inheritance security rules violated while overriding member: 'NHibernate.Cfg.Configuration.GetObjectData(System.Runtime.Serialization.SerializationInfo, System.Runtime.Serialization.StreamingContext)'. Security accessibility of the overriding method must match the security accessibility of the method being overriden.
虽然我根本没有压倒一切。我在互联网上搜索并发现了几篇文章,但我不想更改NHibernate代码因为那不是我的代码。
为什么我没有使用最新的NHibernate? 因为当我使用这个时我的项目破了而且错误是没有重载方法使用3个参数(我的项目使用)
FilterDefinition(string name, string defaultCondition, IDictionary<string, IType> parameterTypes, bool useManyToOne);
现在他们有第四个参数,我不确定结果会是什么。
问题:
有人可以帮我解决这个错误吗?
是否有人成功将NHibernate迁移到.Net 4?
感谢
参考文献:
http://forums.lhotka.net/forums/t/9914.aspx
Inheritance security rules violated while overriding member - SecurityRuleSet.Level2 http://community.codesmithtools.com/Template_Frameworks/f/67/p/12331/47618.aspx#47618
答案 0 :(得分:1)
我知道这不是您正在寻找的答案,但这就是我接触升级的方式:
asp.net 2.0,IIS6,NH 2.1,MVC2项目:
asp.net 4.0,IIS7.5,NH3.3,MVC4
就我个人而言,我发现这是最好的方法,当然我没有在任何时候做太多的痛苦。如果没有集成测试可能覆盖我的代码的大约70%,我也无法做到这一点。
如果我直接使用.net 4和NH.3.3,那么我会处于一个痛苦的世界,因为升级任何项目总会出现问题。我对值得做的建议是慢慢做。
对于未来代码修改或升级的集成测试应该是无痛苦的。
答案 1 :(得分:1)