Pourquoi est-ce que j'obtiens l'erreur «Un code non sécurisé peut n'apparaître qu'en cas de compilation avec / unsafe»?

140

Pourquoi ai-je l'erreur suivante?

Un code non sécurisé ne peut apparaître que si la compilation avec / unsafe "?

Je travaille en C # et Visual Studio 2008 pour la programmation sous Windows CE.

Or
la source

Réponses:

274

Pour utiliser des blocs de code unsafe, le projet doit être compilé avec le commutateur / unsafe activé.

Ouvrez les propriétés du projet, allez dans l' Buildonglet et cochez la Allow unsafe codecase.

Guffa
la source
4
Je dois dire que même si cela permet à la compilation de se compiler, cela ne lui permet toujours pas d'être publié sur le Web: /
Nick
5
@Nick: Oui, si vous publiez du code à compiler dynamiquement, les paramètres du projet ne s'appliquent pas. Voir stackoverflow.com/questions/16567197/…
Guffa
9
Notez que les paramètres peuvent différer entre la compilation Debug et Release. Cela m'a coûté 20 minutes de ma vie.
LosManos
Solution rapide simple..grande.
Kalher
131

Voici une capture d'écran:

Capture d'écran dangereuse

ََََََََ

Manoj Attal
la source
8
Important: sachez également que cette capture d'écran concerne "Configuration: Active (Debug)". Vous devrez probablement également le changer pour "Release", car c'est probablement ce que vous publiez.
Doug S
4

Probablement parce que vous utilisez un code non sécurisé.

Faites-vous quelque chose avec des pointeurs ou des assemblys non gérés quelque part?

Gerrie Schenck
la source
4

Recherchez dans votre code des unsafeblocs ou des instructions. Ceux-ci ne sont valides que compilés avec /unsafe.

Richard
la source
3

Pour utiliser des blocs de code non sécurisés, ouvrez les propriétés du projet, accédez à l' onglet Générer et cochez la case Autoriser le code non sécurisé , puis compilez et exécutez.

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);
         }
     }
}

Production:

Data is 10
Address is 1831848
dipankar ranjan baisya
la source
3

Pour tous ceux qui utilisent Rider, vous devez sélectionner votre projet> Clic droit> Propriétés> Configurations. Ensuite, sélectionnez Déboguer et libérer et cochez "Autoriser le code non sécurisé" pour les deux .Capture d'écran

Tobias Brohl
la source