Почему я получаю сообщение об ошибке «Небезопасный код может появиться только при компиляции с / unsafe»?


140

Почему я получаю следующую ошибку?

Небезопасный код может появиться только при компиляции с / unsafe "?

Я работаю в C # и Visual Studio 2008 для программирования на Windows CE.



Ответы:


274

Чтобы использовать небезопасные блоки кода, проект должен быть скомпилирован с включенным параметром / unsafe.

Откройте свойства проекта, перейдите на Buildвкладку и установите Allow unsafe codeфлажок.


4
Я должен сказать, что несмотря на то, что это позволит строить компилировать, он по- прежнему не позволяет ему получить опубликованы в Интернете: /
Ник

5
@Nick: Да, если вы публикуете код для динамической компиляции, настройки проекта не применяются. См. Stackoverflow.com/questions/16567197/…
Гуффа

9
Обратите внимание, что настройки могут отличаться между отладкой и выпуском релиза. Это просто стоило мне 20 минут моей жизни.
LosManos

Простое быстрое решение .. отлично.
Калхер

131

Вот скриншот:

Небезопасный скриншот

ََََََََ


8
Важно: Также имейте в виду, что этот снимок экрана предназначен для «Конфигурация: Актив (Отладка)». Возможно, вам также потребуется изменить его на «Release», так как это, скорее всего, то, что вы публикуете.
Даг С

4

Возможно, потому что вы используете небезопасный код.

Вы что-то делаете с указателями или неуправляемыми сборками где-нибудь?


4

Поиск в вашем коде unsafeблоков или операторов. Они действительны только при компиляции /unsafe.


3

Чтобы использовать блоки небезопасного кода, откройте свойства проекта, перейдите на вкладку « Сборка » и установите флажок « Разрешить небезопасный код» , затем скомпилируйте и запустите.

class myclass
{
     public static void Main(string[] args)
     {
         unsafe
         {
             int iData = 10;
             int* pData = &iData;
             Console.WriteLine("Data is " + iData);
             Console.WriteLine("Address is " + (int)pData);
         }
     }
}

Вывод:

Data is 10
Address is 1831848

3

Для всех, кто использует Rider, вы должны выбрать свой проект> Щелкните правой кнопкой мыши> Свойства> Конфигурации, затем выберите Отладка и Выпуск и отметьте «Разрешить небезопасный код» для обоих .Скриншот

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.