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

140

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

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

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

Золото
источник

Ответы:

274

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

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

Guffa
источник
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, вы должны выбрать свой проект> Щелкните правой кнопкой мыши> Свойства> Конфигурации, затем выберите Отладка и Выпуск и отметьте «Разрешить небезопасный код» для обоих .Скриншот

Тобиас Брол
источник