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.



Prawdopodobnie duplikat I może sprawić, że
MSBuild

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.


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

ََََََََ


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?


4

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


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

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.