【发布时间】:2012-09-21 15:07:03
【问题描述】:
我有一个使用 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
【问题讨论】:
-
为什么需要将其迁移到 .NET 4?它将在 .NET 4 项目上按原样运行。
-
关于违反的安全规则,这些似乎是让 NHibernate 3.3 为 .Net 4 构建所必需的更改:github.com/oskarb/nhibernate-core/commit/… 请注意,尽管在 .Net 4 上构建 NH 不是必需的.此外,NH4 的工作目前正在进行中,其目标是 .Net 4。
标签: c# asp.net nhibernate exception