Какова действительная функция настройки проекта C # «Разрешить небезопасный код» - PullRequest
5 голосов
/ 24 октября 2008

Мне было интересно, применяется ли параметр проекта C # «Разрешить небезопасный код» только к небезопасному коду C # в самом проекте, или необходимо установить этот параметр при связывании в нативной C ++ DLL? Как насчет связи в управляемой DLL, которая сама ссылается на собственную DLL? Что на самом деле делает этот вариант, под капотом?

Ответы [ 4 ]

9 голосов
/ 24 октября 2008

Это связано с ключевым словом «unsafe» в C #. «unsafe» отключает все проверки, которые обычно происходят, и позволяет вам получить прямой доступ к памяти. это не относится к вызову собственных C ++ DLL или интерфейсов.

5 голосов
/ 24 октября 2008

Это относится только к использованию блоков unsafe (где могут использоваться указатели). Он не управляет P / Invoke.

5 голосов
/ 24 октября 2008

Позволяет использовать блок «небезопасный».

unsafe(...)
{
}
3 голосов
/ 24 октября 2008

Необходимо использовать небезопасный контекст {}. Раньше требовалось использовать sizeof (), но в более поздних версиях это уже не так.

Вам не нужно разрешать небезопасный код, если вы подключаетесь к другой DLL, написанной на другом языке, например C.

...