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.



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.


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

ََََََََ


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?


4

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


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

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.