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é"
4
A
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.