2012-10-04 63 views
1

當我想補充我的自定義控制組件(DLL)文件到Visual Studio工具箱,我跟以下錯誤遇到:錯誤:按類型ItemsCollectionEditor在C#中違反繼承安全規則

出現錯誤加載類型從彙編「我的彙編文件」。

繼承安全規則違反了類型:ItemsCollectionEditor。派生類型必須匹配基類型的安全可訪問性或不易訪問。

此外,我將程序集SecurityRulesAttribute添加到AssemblyInfo.cs文件以解決問題。但是,它並不適合我。

我的AssemblyInfo文件中的代碼是:

using System.Reflection; 
using System.Runtime.CompilerServices; 
using System.Runtime.InteropServices; 
using System.Security; 

[assembly: AssemblyTitle("WindowsFormsControlLibrary2")] 
[assembly: AssemblyDescription("")] 
[assembly: AssemblyConfiguration("")] 
[assembly: AssemblyCompany("SSSSSSSSS")] 
[assembly: AssemblyProduct("WindowsFormsControlLibrary2")] 
[assembly: AssemblyCopyright("Copyright © SSSSSSSSS 2012")] 
[assembly: AssemblyTrademark("")] 
[assembly: AssemblyCulture("")] 

[assembly: ComVisible(false)] 
[assembly: Guid("ed5d434c-36e8-4883-a4d3-3eb6459546b3")] 

[assembly: AssemblyVersion("1.0.0.0")] 
[assembly: AssemblyFileVersion("1.0.0.0")] 

[assembly: AssemblyKeyFile("Saino.snk")] 
[assembly: AssemblyKeyName("")] 
[assembly: System.Security.AllowPartiallyTrustedCallers] 

[assembly: SecurityRules(SecurityRuleSet.Level2, SkipVerificationInFullTrust = true)] 
+0

首先,您應該使用ilasm找到基類程序集(DevComponents或類似的東西)的安全屬性。 – mikalai

+0

Tnx mikalai。我檢查它。 – MRS1367

回答

1

謝謝米卡萊。您的評論對我有一定的幫助。我可以解決我的問題。我從您的評論中瞭解到,可能是我的代碼是正確的,並且存在其他問題。根據您的意見,我發現問題並解決它,我描述的解決方案如下:

如果程序集文件在GAC中註冊並且程序集文件代碼再次更改,並且彙編文件重新編譯,我們想要將新的重新編譯的程序集文件添加到Visual Studio工具箱,將發生此錯誤。發生此錯誤的原因是,在GAC中註冊的新重編譯的程序集文件和在GAC中註冊的程序集文件與此不同。所以,新的重新編譯的程序集文件必須在GAC中重新註冊。

現在,如果在GAC或新重編譯的程序集文件中將已註冊的程序集文件添加到Visual Studio工具箱,將不會出現此錯誤。

是必須考慮的,被刪除或評論的代碼下面一行AssemblyInfo.cs文件另一個祕訣:

[assembly: System.Security.AllowPartiallyTrustedCallers] 

而現在,它會正常工作。

+0

很高興看到。如果你現在瞭解這個案例,爲了社區的緣故,如果你現在看到描述問題的初始問題(沒有源代碼,如果它在這裏沒有任何關係),那將是很好的。 – mikalai

+0

tnx mikalai。我會做的。 – MRS1367

1

我在App_Startand下刪除了MVcMembership.cs文件中的以下代碼行。它爲我工作得很好。

[assembly: WebActivator.PreApplicationStartMethod(typeof(CaWorkCompCoverage.App_Start.MvcMembership), "Start")] 
相關問題