2008-10-24 25 views
4

Je me demandais si le paramètre de projet C# "Autoriser le code non sécurisé" s'applique uniquement au code C# dangereux dans le projet lui-même, ou est-il nécessaire de définir cette option lors de la liaison dans une DLL C++ native? Qu'en est-il de la liaison dans une DLL managée qui elle-même lie à une DLL native? Que fait vraiment cette option, sous le capot?Quelle est la fonction réelle du projet C# "Autoriser le code non sécurisé"

Répondre

8

Il a à voir avec le mot-clé « dangereux » en C#. "non sécurisé" désactive toutes les vérifications qui se produisent normalement et vous permet d'accéder directement à la mémoire. il ne se réfère pas à l'appel de DLL ou d'interfaces C++ natives.

5

Il vous permet d'utiliser le bloc "non sécurisé".

unsafe(...) 
{ 
} 
3

Il est nécessaire d'utiliser le contexte {} dangereux. Il était nécessaire d'utiliser sizeof() mais dans les versions ultérieures ce n'est plus vrai.

Vous n'êtes pas obligé de permettre à un code dangereux si vous externing à une autre DLL écrite dans une autre langue comme C.

5

Cela concerne uniquement l'utilisation de blocs unsafe (où des pointeurs peuvent être utilisés). Cela ne gouverne pas P/Invoke.