Tại sao tôi nhận được lỗi mã Mã không an toàn có thể chỉ xuất hiện nếu biên dịch với / không an toàn.


140

Tại sao tôi nhận được lỗi sau?

Mã không an toàn chỉ có thể xuất hiện nếu biên dịch với / không an toàn "?

Tôi làm việc trong C # và Visual Studio 2008 để lập trình trên Windows CE.



Câu trả lời:


274

Để sử dụng các khối mã không an toàn, dự án phải được biên dịch với bật / không an toàn.

Mở các thuộc tính cho dự án, đi đến Buildtab và kiểm tra Allow unsafe codehộp kiểm.


4
Tôi phải nói rằng, mặc dù điều đó không cho phép xây dựng để biên dịch, nhưng nó vẫn không cho phép nó được xuất bản lên web: /
Nick

5
@Nick: Có, nếu bạn xuất bản mã để được biên dịch động, thì cài đặt dự án sẽ không áp dụng. Xem stackoverflow.com/questions/16567197/ cường
Guffa

9
Lưu ý rằng các cài đặt có thể khác nhau giữa biên dịch gỡ lỗi và biên dịch. Điều này chỉ tốn 20 phút của cuộc đời tôi.
LosManos

Giải pháp nhanh chóng đơn giản..tạo.
Kalher

131

Đây là một ảnh chụp màn hình:

Ảnh chụp màn hình không an toàn

ََََََََ


8
Quan trọng: Cũng cần lưu ý rằng ảnh chụp màn hình này là dành cho "Cấu hình: Hoạt động (Gỡ lỗi)". Có lẽ bạn cũng cần thay đổi nó thành "Phát hành", vì đó rất có thể là những gì bạn đang xuất bản.
Doug S

4

Có lẽ bởi vì bạn đang sử dụng mã không an toàn.

Bạn đang làm một cái gì đó với con trỏ hoặc lắp ráp không được quản lý ở đâu đó?


4

Tìm kiếm mã của bạn cho unsafecác khối hoặc báo cáo. Đây chỉ là hợp lệ được biên dịch với /unsafe.


3

Để sử dụng các khối mã không an toàn, hãy mở các thuộc tính cho dự án, chuyển đến tab Build và kiểm tra hộp kiểm Cho phép mã không an toàn , sau đó biên dịch và chạy.

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

Đầu ra:

Data is 10
Address is 1831848

3

Đối với mọi người sử dụng Rider, bạn phải chọn dự án của mình> Nhấp chuột phải> Thuộc tính> Cấu hình Sau đó chọn Gỡ lỗi và Phát hành và kiểm tra "Cho phép mã không an toàn" cho cả hai .Ảnh chụp màn hình

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.