派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问

Tug*_*ain 5 upgrade dotnetopenauth asp.net-mvc-4 asp.net-mvc-5

几天前我按照这些说明将我的MVC 4应用程序升级到MVC 5 ,现在我收到以下错误.我使用Nuget(v4.3.3.13295)将DotNetOpenAuth更新为最新位,但它仍然会抛出此错误.

我该如何解决?

违反类型的继承安全规则:'DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult'.派生类型必须与基本类型的安全可访问性匹配,或者不太容易访问.

Tug*_*ain 5

终于解决了这个问题.原来我需要对DotNetOpenAuth的源代码进行一些更改并重新编译它.这根本不容易,因为从github下载后源代码将无法编译.我不得不花费大约3天的时间尝试各种各样的东西,并学习构建系统到DotNetOpenAuth的项目文件中,直到我最终编译完成.似乎这个项目的作者已经放弃了它.查看更多有关这个问题在这里.

  1. 使用以下命令行下载4.3代码库:git clone -b v4.3 https://github.com/DotNetOpenAuth/DotNetOpenAuth.git
  2. 编辑/src/version.txt并将其更改为4.4.0.这使得此版本高于官方Nuget版本,因此安装Nuget软件包不会尝试从其存储库安装旧版本的DotNetOpenAuth程序集.
  3. / src /目录下的所有AssemblyInfo.cs文件中删除以下字符串的所有实例.

    [assembly:AllowPartiallyTrustedCallers]

  4. 我不得不在两个项目中使用Microsoft.Contracts引用,并将其指向/tools/Contracts/PublicAssemblies/v3.5/Microsoft.Contracts.dll,然后使用using 别名从此程序集中获取类以正确解析.一些Requires.NotNull()行拒绝编译,所以我只是将它们评论出来... c'est la vie ..

  5. 运行以下命令以跳过这些程序集的验证: sn.exe -Vr *,2780ccd10d57b246

构建程序集后,我引用了这些程序,从Nuget 重新添加了Microsoft.AspNet.WebPages.OAuth 3.0,重建了我的解决方案,最后我的应用程序启动并在MVC 5上运行.