Visual Studio 2010 đột nhiên không thể nhìn thấy không gian tên?


83

Giải pháp C # WinForms của tôi có hai dự án. Một DLL là dự án chính mà tôi đang làm việc và một WinForms thực thi mà tôi gọi là "Hộp cát" để tôi có thể biên dịch / chạy / gỡ lỗi DLL dễ dàng trong một lần.

Tôi đang làm việc trong .Net 4.0 cho cả hai dự án.

Mọi thứ đều hoạt động tốt cho đến khi tôi thêm một số mã có vẻ vô tội và một tham chiếu đến System.Web trong DLL. Bây giờ dự án Hộp cát của tôi không thể nhìn thấy không gian tên của dự án DLL. Tôi đã không thay đổi bất cứ điều gì mà tôi tin rằng lẽ ra phải ảnh hưởng đến điều này.

Nếu tôi xóa tham chiếu dự án tới DLL khỏi tham chiếu Sandbox và thêm lại nó, thì các gạch dưới màu đỏ sẽ biến mất và mã màu quay trở lại cho tất cả các lớp của tôi, v.v.; nhưng ngay sau khi tôi cố gắng xây dựng giải pháp, toàn bộ mọi thứ lại sụp đổ.

Khi tôi nhấp chuột phải vào dự án DLL trong tham chiếu của Hộp cát và chế độ xem trong trình duyệt đối tượng, tôi có thể thấy không gian tên và tất cả nội dung trong đó.

Tôi có cảm giác đây có thể là một số loại lỗi?

Đây có phải là một số loại lỗi VS2010? Tôi đã gặp vấn đề tương tự cách đây vài tháng và tôi chỉ có thể khắc phục nó vào thời điểm đó bằng cách tạo một dự án hoàn toàn mới và nhập lại các tệp của mình. Tuy nhiên, lần này, tôi có một bajillion tệp và sẽ chỉ làm điều đó như một phương sách cuối cùng!

Chỉnh sửa: Sau khi hoảng sợ xem qua và hoàn tác tất cả các thay đổi của tôi, cố gắng tìm nguyên nhân gây ra sự cố, có vẻ như dòng này:

string url = "http://maps.google.com?q=" + HttpUtility.UrlEncode(address);

Nếu tôi nhận xét dòng này, thì tôi không gặp lỗi không gian tên và dự án xây dựng tốt. Tôi không thể thấy có gì sai với dòng này.

Câu trả lời:


149

Tôi đã sẵn sàng để thông báo đây là một lỗi trong VS2010, điều này đã gây khó chịu cho quá nhiều lập trình viên. Cách khắc phục rất dễ dàng: Project + Properties, Application tab, thay đổi Target Framework thành ".NET Framework 4" thay vì Client Profile được chọn theo mặc định.

System.Web không được bao gồm trong hồ sơ khách hàng. Có tùy chọn này ngay từ đầu là khá ngớ ngẩn, hồ sơ khách hàng chỉ nhỏ hơn 15% so với phiên bản đầy đủ của .NET 4.0. Có nó được chọn theo mặc định thậm chí còn buồn hơn. Nhưng tôi lạc đề.

CẬP NHẬT: rất may là tất cả điều này đã được khắc phục trong VS2012. Điều này không còn làm cho hồ sơ khách hàng làm hồ sơ mặc định cho một dự án mới. Và hồ sơ khách hàng đã ngừng hoạt động hoàn toàn trong .NET 4.5, rất tốt.


1
Cảm ơn vì điều đó. DLL của tôi được đặt thành .Net 4.0, nhưng Hộp cát được đặt thành Hồ sơ ứng dụng khách .Net 4.0. Sau khi làm việc trong dự án này trong 5 tháng, tôi đã hoảng sợ đến mức nào khi mọi thứ tan vỡ dường như không có lý do ... Ít nhất tôi sẽ biết cho lần sau!
Ozzah

27
Những câu trả lời kiểu này là thịt thật và khoai tây của trang web này. Niềm tin của tôi vào nhân loại đã tăng lên một chút và dự án của tôi cuối cùng cũng hoàn thành. Cảm ơn.
CloudMeta

1
Tôi đã thay đổi Khung mục tiêu thành 4.0 trong tất cả các dự án của mình, tuy nhiên vẫn không tìm thấy không gian tên của các dự án tùy thuộc. Có điều gì khác mà tôi nên chắc chắn để xác minh không?
Steven Ryssaert

@UwConcept - đây không phải là về số phiên bản. Đó là về hồ sơ khách hàng so với đầy đủ. Vui lòng bắt đầu câu hỏi của riêng bạn nếu điều đó không hữu ích.
Hans Passant

@HansPassant Có, tôi xin lỗi nếu câu hỏi của tôi khó hiểu. Tôi đang sử dụng phiên bản Máy khách 4.0 và đã thay đổi phiên bản đó thành 4.0. Tuy nhiên, không thể tìm thấy không gian tên trong các dự án khác trong giải pháp của tôi giữa các dự án.
Steven Ryssaert

8

Kiểm tra để đảm bảo rằng cả hai dự án đang sử dụng hồ sơ không phải khách hàng cho khuôn khổ mục tiêu của chúng (đi tới thuộc tính của từng dự án để thực hiện việc này).


Cảm ơn Mark. Bạn và Hans đã đóng đinh nó trên đầu, điều này đã cố định nó.
Ozzah

2

Một khả năng là phiên bản .NET Framework đích của thư viện lớp cao hơn phiên bản của dự án. Tôi đã đối mặt với vấn đề này và tôi đã giải quyết nó bằng cách đóng cửa studio trực quan, mở lại studio trực quan, dọn dẹp và xây dựng lại giải pháp. Điều này đã làm việc cho tôi. Trên một số bài viết khác, tôi đã đọc các câu trả lời và hầu hết người dùng đã giải quyết vấn đề bằng cách làm theo cách này.


1
Câu hỏi này đã được trả lời thỏa đáng hơn bốn năm rưỡi trước.
Ozzah

+ để thêm thông tin hữu ích và hữu ích về một lỗi liên quan chặt chẽ
Eric Brown - Cal

@Ozzah với tư cách là một người xem xét lỗi này vào năm 2017, tôi chắc chắn rất vui khi có thêm thông tin. +1
Cowthulhu

1

Trước tiên, hãy thử chỉ xây dựng dự án với dll Sandbox một cách độc lập.

Sau đó, trỏ dự án thực thi của bạn đến dll cần thiết và đảm bảo copy localđược đặt thành true. trong cài đặt tham chiếu.

Sau đó xây dựng dự án thực thi.


Và đối với tình yêu của tất cả mọi sự thánh chắc chắn rằng các loại mục tiêu được thiết lập để Compile và không nội dung (mà tôi là vì một lý do)
jcolebrand

0

Thay đổi khung mục tiêu từ "Hồ sơ máy khách .NET Framweork 4" thành ".NET Framework 4" đã làm việc với tôi với sự cố tương tự. Tôi đồng ý rằng hồ sơ khách hàng dường như không có nhiều lợi thế khi sử dụng nó. Tôi dường như mắc phải những lỗi kỳ lạ mà tôi tìm kiếm cho đến khi tôi nhớ rằng Visual Studio mặc định cho hồ sơ khách hàng. Tôi đoán đạo lý của câu chuyện khi gặp lỗi là: nếu "Giải pháp xây dựng lại" không hoạt động, hãy kiểm tra Khung mục tiêu ...


0

Nếu bạn đã thử thực hiện thay đổi Khung mà vẫn không hiệu quả, tôi hy vọng điều này sẽ hiệu quả với bạn (giống như đối với tôi): Chỉ cần thêm các tham chiếu cần thiết từ bên trong các dự án của bạn. Rất rõ ràng nhưng tôi đã làm sai cho đến khi tôi tìm ra vấn đề.


0

Tôi vừa gặp sự cố này và hóa ra là tôi đã sử dụng nhiều không gian tên có cùng tên đối tượng (tức là các đối tượng nghiệp vụ có cùng tên với mô hình mvc);

Đủ điều kiện các tên đã khắc phục sự cố cho tôi.

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.