Как отметить как сборку как "безопасную"?
В качестве альтернативы, как мне Visual Studio скажет мне, когда что-то в моей сборке не "безопасно"?
Иногда вы не можете использовать сборку, если она не "безопасна" (например, из SQL Server).
Мне хотелось бы, чтобы моя сборка была помечена как безопасная. Если моя сборка не может быть помечена как безопасная, потому что она небезопасна, я хотел бы знать, как я могу знать, что моя сборка небезопасна.
В Visual Studio есть несколько концепций, которые, по-видимому, связаны с безопасностью, которая может или не может иметь ничего общего с безопасностью сборки:
-
Разрешить небезопасный код:
- Что разрешено, если я могу проверить вариант использования небезопасного кода?
- Что не разрешено, если я снижу флажок разрешить вариант небезопасного кода?
-
Какое отношение, если таковое имеет место, относится к "небезопасному коду", когда сборка "безопасна" ?
(я спрашиваю, потому что моя сборка не позволяет "разрешить небезопасный код", но разрешает вызовы P/Invoke, которые, по моему мнению, были определением "небезопасно" )
-
[assembly: CLSCompliant(true)] namespace MyApplication
- Какое отношение, если таковое имеет отношение, соответствует коду "cls-совместимый", когда сборка "безопасна" ?
-
небезопасный блок кода:
int error; unsafe { error = 0x80004005; }
Код внутри блока
unsafe
"небезопасен" -
Корпорация Майкрософт рекомендует создать класс под названием
UnsafeNativeMethods
, который содержит небезопасный управляемый код:[SuppressUnmanagedCodeSecurity] internal static class UnsafeNativeMethods { ... }
Это контрастирует с
SafeNativeMethods
:[SuppressUnmanagedCodeSecurity] internal static class SafeNativeMethods { ... }
который содержит безопасные собственные методы и
NativeMethods
:internal static class SafeNativeMethods { ... }
которые содержат встроенные методы.
Как отметить как сборку как "безопасную"?
Как SQL знает, что, поскольку сборка "небезопасна"?