¿Cómo marcar un conjunto .net como seguro?

¿Cómo marco el ensamblaje como "seguro"?

Alternativamente, ¿cómo puedo hacer que Visual Studio me diga cuando algo en mi ensamblaje no es "seguro"?

A veces no puede usar un ensamblaje a menos que sea "seguro" (por ejemplo, desde SQL Server).

Me gustaría que mi asamblea se marque como segura. Si mi ensamblaje no se puede marcar como seguro porque no es seguro, me gustaría saber cómo puedo saber que mi ensamblaje no es seguro.

Hay algunos conceptos en Visual Studio que parecen estar relacionados con la seguridad, que pueden o no tener algo que ver con que un ensamblaje sea "seguro":

Permitir código inseguro opción de montaje:

Qué está permitido si reviso la Permitir código inseguro ¿opciónQué no está permitido si desactivo la Permitir código inseguro ¿opción

¿Qué relación, si hay alguna, tiene que ver el "código inseguro" con un ensamblaje que es "seguro"?

(pregunto porque mi ensamblado no "permite código inseguro", pero permite llamadas P / Invoke, que pensé que era la definición de "inseguro")

ClsCompliant opción de montaje:

[assembly: CLSCompliant(true)]
namespace MyApplication
¿Cuál es la relación, si la hay, tiene que ver el código "compatible con cls" con un ensamblaje que es "seguro"?

insegur bloque de código:

int error;
unsafe
{
    error = 0x80004005;
}    

El código dentro de launsafe bloque es "inseguro"

UnsafeNativeMathods

Microsoft recomienda crear una clase llamadaUnsafeNativeMethods que contienen código administrado inseguro:

[SuppressUnmanagedCodeSecurity]
internal static class UnsafeNativeMethods
{
   ...          
}

Esto contrasta conSafeNativeMethods:

[SuppressUnmanagedCodeSecurity]
internal static class SafeNativeMethods
{
   ...          
}

que contiene métodos nativos seguros, yNativeMethods:

internal static class SafeNativeMethods
{
   ...          
}

que contienen métodos nativos.

¿Cómo marco el ensamblaje como "seguro"?

Cómo sabe SQL que el ensamblado "no es seguro"?

Respuestas a la pregunta(8)

Su respuesta a la pregunta