C# 错误:C中的类型ItemsCollectionEditor违反了继承安全规则#

C# 错误:C中的类型ItemsCollectionEditor违反了继承安全规则#,c#,winforms,custom-controls,design-time,dotnetbar,C#,Winforms,Custom Controls,Design Time,Dotnetbar,当我想将自定义控件程序集(DLL)文件添加到Visual Studio工具箱时,我遇到以下错误: 从程序集“我的程序集文件”加载类型时出错 类型:ItemsCollectionEditor违反了继承安全规则。派生类型必须与基类型的安全可访问性相匹配,或者不易访问 此外,我将AssemblySecurityRulesAttribute添加到AssemblyInfo.cs文件以解决此问题。然而,这对我不起作用 我的AssemblyInfo文件代码为: using System.Reflection;

当我想将自定义控件程序集(DLL)文件添加到Visual Studio工具箱时,我遇到以下错误:

从程序集“我的程序集文件”加载类型时出错

类型:ItemsCollectionEditor违反了继承安全规则。派生类型必须与基类型的安全可访问性相匹配,或者不易访问

此外,我将AssemblySecurityRulesAttribute添加到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)]

谢谢你,米卡莱。你的评论给了我一个线索。我可以解决我的问题。我从您的评论中了解到,可能是我的代码是正确的,而问题来自其他方面。根据您的意见,我发现问题并解决,我将解决方案描述如下:

如果程序集文件已在GAC中注册,并且程序集文件代码再次更改,并且程序集文件已重新编译,并且我们希望将新的重新编译的程序集文件添加到Visual Studio工具箱,则将发生此错误。发生此错误的原因是之前在GAC中注册的新重新编译的程序集文件与GAC中注册的程序集文件不同。所以,新的重新编译的程序集文件必须在GAC中再次注册

现在,如果将GAC中注册的程序集文件或新的重新编译的程序集文件添加到Visual Studio工具箱中,则永远不会发生此错误

另一个必须考虑的技巧是删除或注释AssemblyInfo.cs文件中的以下代码行:

[assembly: System.Security.AllowPartiallyTrustedCallers]

现在,它将正常工作。

我从
App\u Startand
下的
MVcMembership.cs
文件中删除了下面的代码行。这对我很管用

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

首先,您应该使用ilasm(例如.Tnx mikalai)查找基类程序集(DevComponents或类似的东西)的安全属性。我查过了,很高兴见到你。如果您现在理解了这个案例,为了社区的利益,如果您按照您现在看到的描述问题的初始问题(没有源代码,如果它与此无关),那么这将是一件好事。