Dlaczego pojawia się komunikat o błędzie „Niebezpieczny kod może pojawić się tylko podczas kompilacji z / niebezpieczny”?

140

Dlaczego otrzymuję następujący błąd?

Niebezpieczny kod może pojawić się tylko w przypadku kompilacji z / niebezpiecznym ”?

Pracuję w C # i Visual Studio 2008 do programowania w Windows CE.

Złoto
źródło

Odpowiedzi:

274

Aby użyć niebezpiecznych bloków kodu, projekt musi zostać skompilowany z włączoną opcją / unsafe.

Otwórz właściwości projektu, przejdź do Buildzakładki i zaznacz pole Allow unsafe codewyboru.

Guffa
źródło
4
Muszę powiedzieć, że mimo że umożliwia kompilację kompilacji, nadal nie pozwala na publikację w Internecie: /
Nick
5
@Nick: Tak, jeśli publikujesz kod do dynamicznej kompilacji, ustawienia projektu nie mają zastosowania. Zobacz stackoverflow.com/questions/16567197/…
Guffa
9
Zauważ, że ustawienia mogą się różnić między kompilacją debugowania i wydania. Kosztowało mnie to tylko 20 minut mojego życia.
LosManos
Proste, szybkie rozwiązanie… świetne.
Kalher
131

Oto zrzut ekranu:

Niebezpieczny zrzut ekranu

ََََََََ

Manoj Attal
źródło
8
Ważne: należy również pamiętać, że ten zrzut ekranu dotyczy „Konfiguracja: aktywna (debugowanie)”. Prawdopodobnie będziesz musiał również zmienić to na „Wydanie”, ponieważ najprawdopodobniej to właśnie publikujesz.
Doug S
4

Prawdopodobnie dlatego, że używasz niebezpiecznego kodu.

Czy robisz coś gdzieś ze wskaźnikami lub niezarządzanymi zespołami?

Gerrie Schenck
źródło
4

Przeszukuj kod pod kątem unsafebloków lub instrukcji. Są one ważne tylko w przypadku kompilacji /unsafe.

Richard
źródło
3

Aby użyć niebezpiecznych bloków kodu, otwórz właściwości projektu, przejdź do karty Kompilacja i zaznacz pole wyboru Zezwalaj na niebezpieczny kod , a następnie skompiluj i uruchom.

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

Wynik:

Data is 10
Address is 1831848
dipankar ranjan baisya
źródło
3

Dla każdego, kto używa Ridera, musisz wybrać swój projekt> Kliknij prawym przyciskiem> Właściwości> Konfiguracje, a następnie wybierz opcję Debuguj i zwolnij i zaznacz opcję „Zezwalaj na niebezpieczny kod” dla obu .Zrzut ekranu

Tobias Brohl
źródło