MRS1989 Ответов: 2

Ошибка: правила безопасности наследования нарушены типом ItemsCollectionEditor в C#


Когда я хочу добавить свой файл пользовательской сборки управления (DLL) в набор инструментов Visual Studio, я сталкиваюсь со следующей ошибкой:
Произошла ошибка загрузки типов из сборки "мой файл сборки."
Правила безопасности наследования нарушаются типом: ItemsCollectionEditor. Производные типы должны либо соответствовать доступности безопасности базового типа, либо быть менее доступными.
Кроме того, я добавляю атрибут assembly SecurityRulesAttribute в файл AssemblyInfo.cs для решения этой проблемы. Однако у меня это не сработало.
Мой код файла AssemblyInfo таков:
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WindowsFormsControlLibrary2")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("SSSSSSSSS")]
[assembly: AssemblyProduct("WindowsFormsControlLibrary2")]
[assembly: AssemblyCopyright("Copyright © SSSSSSSSS 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible 
// to COM components.  If you need to access a type in this assembly from 
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("ed5d434c-36e8-4883-a4d3-3eb6459546b3")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers 
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

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

[assembly: SecurityRules(SecurityRuleSet.Level2, SkipVerificationInFullTrust = true)]
//[assembly: SecurityRules(SecurityRuleSet.Level1)]

Kenneth Haugland

Это был огромный кодовый дамп... Если вы хотите получить ответ, вы должны сосредоточиться на своей конкретной проблеме, а не сбрасывать весь свой код здесь.

MRS1989

В заголовке моего вопроса появился ItemsCollectionEditor. Итак, я предполагаю, что эта ошибка может быть из следующего раздела, но я не уверен:

публичный класс ItemsCollectionEditor : CollectionEditor
{
частный тип[] типы;

public ItemsCollectionEditor(тип type)
: базовый тип)
{
types = new Type[] { typeof(Items) };

}

защищенный тип переопределения[] CreateNewItemTypes()
{
возвращаемый тип;
}
}

По этой причине я добавляю сюда все свои коды.

2 Ответов

Рейтинг:
19

MRS1989

Я понимаю, что, возможно, мой код верен и проблема с другими вещами. Исходя из этого, я нахожу проблему и решаю ее, что я описываю решение следующим образом:
Если файл сборки зарегистрирован в GAC и коды файлов сборки снова изменяются, а файл сборки повторно компилируется, и мы хотим добавить новый перекомпилированный файл сборки в Visual Studio toolbox, то произойдет эта ошибка. Причина возникновения этой ошибки заключается в том, что новый перекомпилированный файл сборки, зарегистрированный в GAC ранее, и зарегистрированный файл сборки в GAC отличаются от него. Таким образом, новый перекомпилированный файл сборки должен быть снова зарегистрирован в GAC.
Теперь, если добавить зарегистрированный файл сборки в GAC или новый перекомпилированный файл сборки в Visual Studio toolbox, эта ошибка никогда не возникнет.
Еще один совет, который необходимо учитывать, - это удаление или комментирование следующей строки кода в файле AssemblyInfo.cs:

[assembly: System.Security.AllowPartiallyTrustedCallers]

И теперь он будет работать правильно.


vijaymodi_81

Лучший из них. Спасибо

Member 10041736

Спасибо вам ооооочень большое ... Это экономит мое время

Рейтинг:
1

rafael.aca

Я столкнулся с этой ошибкой "правила безопасности наследования нарушены по типу" в службе Windows, которая использовала компоненты WCF.

Тот же сервис работал на другом сервере, но на конкретном-нет.

Что исправило эту ошибку, так это комментирование следующей строки в файле app.config.

<NetFx40_LegacySecurityPolicy enabled="true" />


Нам потребовалось много времени, чтобы понять это, надеюсь, это кому-то поможет.