2013-11-22 42 views
5

幾天前,我已將MVC 4應用程序升級到MVC 5,因爲這些instructions現在出現以下錯誤。我使用Nuget(v4.3.3.13295)將DotNetOpenAuth更新爲最新的位,但它仍然會拋出此錯誤。派生類型必須匹配基類型的安全可訪問性或不易訪問

我該如何解決這個問題?

違反類型的繼承安全規則: 'DotNetOpenAuth.Messaging.OutgoingWebResponseActionResult'。派生的 類型必須匹配基類型的安全可訪問性,否則不易訪問。

回答

5

最後解決了這個問題。原來,我需要對DotNetOpenAuth的源代碼進行一些更改並重新編譯它。這並不容易,因爲源代碼在從github下載後不能編譯。我不得不花費大約3天的時間嘗試各種各樣的東西,並學習構建系統,直到我終於編譯完成,纔將它們網格化爲DotNetOpenAuth的項目文件。似乎這個項目的作者已經放棄了它。查看更多關於此問題here

  1. 使用此命令行下載4.3代碼庫:GIT中克隆-b V4.3 https://github.com/DotNetOpenAuth/DotNetOpenAuth.git
  2. 編輯/src/version.txt並將它更改爲4.4.0。這使得該版本高於官方的Nuget版本,因此安裝Nuget軟件包不會嘗試從其存儲庫安裝舊版本的DotNetOpenAuth程序集。
  3. 刪除所有AssemblyInfo.cs下的所有文件/src/目錄下的文件。

    [組件:AllowPartiallyTrustedCallers]

  4. 我不得不更動在兩個項目的Microsoft.Contracts參考並將其指向/tools/Contracts/PublicAssemblies/v3.5/Microsoft。 Contracts.dll,然後使用別名從該程序集中獲取類以正確解析。一些Requires.NotNull()行拒絕編譯,所以我只是評論出來......這就是生活..

  5. 運行以下命令跳過這些組件的驗證:sn.exe -Vr *,2780ccd10d57b246

一旦組件建造我引用的那些,重新添加Microsoft.AspNet.WebPages.OAuth 3.0從的NuGet,重建我的解決辦法,最後我的應用程序啓動並在MVC 5.運行

+0

謝謝你這麼多分享這一點,從大量的問題中拯救了我女士。我必須使用以下命令跳過強名稱驗證:sn.exe -Vr「*,2780ccd10d57b246」 – eadam

+1

不幸的是我不得不運行它。將它添加到我上面的答案中。強大的命名密鑰文件使用密碼進行加密,因此您無法重新編譯並將輸出傳遞爲真正的交易。有意義,但如果項目被放棄,如果作者要解密密鑰以便有人拿起火炬,那將是非常好的。 – TugboatCaptain

相關問題