2015-05-06 12 views
13

Tôi gặp lỗi xây dựng vì một số lớp tôi đang sử dụng có sẵn trong "DNX 4.5.1" chứ không phải "DNX Core 5.0".Làm cách nào để chuyển ngữ cảnh trong VS.NET 2015?

Lỗi này là:

Loại hoặc không gian tên '[SomeClass]' không thể tìm được.

Trong cột dự án của cửa sổ "Danh sách lỗi", tôi thấy DNX Core 5.0.

Trong menu ngữ cảnh, DNX 4.5.1 được chọn. Tại sao VS.NET cố gắng tiếp tục sử dụng DNX Core 5.0 khi bối cảnh là 4.5.1?

+0

451 sẽ là khung .net dự kiến ​​của bạn. Nó không có gì để làm với bất kỳ tài liệu tham khảo trong dự án. Kiểm tra tài liệu tham khảo của bạn để đảm bảo nó chỉ sử dụng phiên bản 451 của dnx của bạn. – paqogomez

+0

Như tôi đã đề cập, đó là ngữ cảnh được đặt thành. Bạn đang đề cập đến cái gì khác? – 4thSpace

+0

Nếu bạn đang nhìn thấy "DNX Core 5.0" trong cột dự án của cửa sổ Danh sách lỗi, có vẻ như bạn có một dự án có tên "DNX Core 5.0" như là một phần của giải pháp Visual Studio của bạn. – RenniePet

Trả lời

35

Trong trường hợp một số người vẫn đang vật lộn với điều này, bạn có thể dereference DNX Core 5.0 bằng cách loại bỏ nó khỏi tham chiếu khung của bạn trong tệp project.json.

Phần

"frameworks": { 
    "dnx451": { }, 
    "dnxcore50": { } 
    }, 

nên trở thành

"frameworks": { 
    "dnx451": { } 
    }, 
+1

Nếu bạn không nhắm mục tiêu nền tảng không phải Windows, hãy thả DNX Core 50 từ tệp project.json của bạn –

+0

Omg Cảm ơn bạn !!! – Iggy

7

Thay vì hoàn toàn loại bỏ DNXCORE50 từ project.json của bạn. Như trước đây, bạn có thể thêm mã khuôn khổ cụ thể nếu bạn bọc nó trong #if #endif như được hiển thị trong mã bên dưới. Tên khuôn khổ DNX451 và DNXCORE50 được những biểu tượng nổi tiếng thực sự gọi là biệt danh khuôn khổ mục tiêu (TFMs) và đều giống nhau trong suốt tập tin project.json, tên thư mục, gói NuGet, vv

Đơn giản chỉ cần áp dụng một tuyên bố có điều kiện:

public string Index(){ 
    #if DNX451 
     //code logic here for DNX 4.5.1 
    #endif 
    #if DNXCORE50 

     //code logic here for DNX Core 5.0 

    #endif 
} 
+0

Tìm thấy bạn phải sử dụng điều này trên các câu lệnh 'using', trong trường hợp của tôi' using MySqlData.MySqlCLient' - đã khiến tôi đau buồn, cảm ơn vì điều này. – PurpleSmurph

Các vấn đề liên quan