Какова действительная функция настройки проекта C# "Разрешить небезопасный код"
Мне было интересно, если параметр проекта C# "Разрешить небезопасный код" применяется только к небезопасному коду C# в самом проекте, или необходимо установить этот параметр при связывании в нативной C++ DLL? Как насчет ссылок в управляемой DLL, которая сама ссылается на собственную DLL? Что на самом деле делает этот вариант, под капотом?
4 ответа
Это связано с ключевым словом "unsafe" в C#. "unsafe" отключает все проверки, которые обычно происходят, и позволяет вам получить прямой доступ к памяти. это не относится к вызову собственных C++ DLL или интерфейсов.
Это позволяет использовать "небезопасный" блок.
unsafe(...)
{
}
Это относится только к использованию unsafe
блоки (где можно использовать указатели). Это не регулирует P/Invoke.
Необходимо использовать небезопасный контекст { }. Раньше требовалось использовать sizeof(), но в более поздних версиях это уже не так.
Вам не нужно разрешать небезопасный код, если вы подключаетесь к другой библиотеке DLL, написанной на другом языке, например C.