Warum erhalte ich die Fehlermeldung "Unsicherer Code wird möglicherweise nur beim Kompilieren mit / unsicher angezeigt"?


140

Warum erhalte ich den folgenden Fehler?

Unsicherer Code wird möglicherweise nur angezeigt, wenn mit / unsafe kompiliert wird "?

Ich arbeite in C # und Visual Studio 2008 für die Programmierung unter Windows CE.



Antworten:


274

Um unsichere Codeblöcke zu verwenden, muss das Projekt mit eingeschaltetem Schalter / unsafe kompiliert werden.

Öffnen Sie die Eigenschaften für das Projekt, wechseln Sie zur BuildRegisterkarte und aktivieren Sie das Allow unsafe codeKontrollkästchen.


4
Ich muss sagen, obwohl dies das Kompilieren des Builds ermöglicht, kann es dennoch nicht im Web veröffentlicht werden: /
Nick

5
@Nick: Ja, wenn Sie Code veröffentlichen, der dynamisch kompiliert werden soll, gelten die Projekteinstellungen nicht. Siehe stackoverflow.com/questions/16567197/...
Guffa

9
Beachten Sie, dass die Einstellungen zwischen Debug- und Release-Kompilierung unterschiedlich sein können. Das hat mich nur 20 Minuten meines Lebens gekostet.
LosManos

Einfache schnelle Lösung ... großartig.
Kalher

131

Hier ist ein Screenshot:

Unsicherer Screenshot

ََََََََ


8
Wichtig: Beachten Sie auch, dass dieser Screenshot für "Konfiguration: Aktiv (Debug)" ist. Sie müssen es wahrscheinlich auch für "Release" ändern, da Sie dies höchstwahrscheinlich veröffentlichen.
Doug S

4

Wahrscheinlich, weil Sie unsicheren Code verwenden.

Tun Sie irgendwo etwas mit Zeigern oder nicht verwalteten Assemblys?


4

Durchsuchen Sie Ihren Code nach unsafeBlöcken oder Anweisungen. Diese sind nur gültig, wenn mit kompiliert wird /unsafe.


3

Um unsichere Codeblöcke zu verwenden, öffnen Sie die Eigenschaften für das Projekt, wechseln Sie zur Registerkarte Erstellen und aktivieren Sie das Kontrollkästchen Unsicheren Code zulassen , kompilieren und ausführen.

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

Ausgabe:

Data is 10
Address is 1831848

3

Für alle, die Rider verwenden, müssen Sie Ihr Projekt auswählen> Rechtsklick> Eigenschaften> Konfigurationen. Wählen Sie dann Debug und Release und aktivieren Sie für beide die Option "Unsicheren Code zulassen" .Bildschirmfoto

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.