Tôi đã tạo một Ứng dụng chia nhỏ Metro mới trong C++ sử dụng VS2012 trên Win8 (cả RC). Tất cả mọi thứ được biên dịch và làm việc ra khỏi hộp. Sau đó tôi đã thay đổi và thay đổi các không gian tên được tạo thành của riêng mình. Sau một số thử thách và khổ nạn, tôi có mọi thứ để biên dịch mà không có cảnh báo, lỗi, cũng như thông điệp. Ứng dụng (như trong mẫu dự án) chạy tốt.XAML không thể tìm thấy tham chiếu trong không gian tên cục bộ
Tuy nhiên, nếu tôi cố gắng chỉnh sửa một trong các tập tin được tạo XAML (ItemsPage.xaml hoặc SplitPage.xaml) tôi nhận được một "lỗi Markup" trên dòng đầu tiên:
Cái tên "LayoutAwarePage" không tồn tại trong không gian tên "using: ABProduct.Client.Common".
Định nghĩa của lớp là:
namespace A{ namespace B { namespace Product { namespace Client { namespace Common
mã biên dịch tốt, và chạy tốt. Điều này chỉ xảy ra ở chế độ thiết kế.
CẬP NHẬT: Tôi đã thêm tệp xaml mới và (sau khi sửa các không gian tên một lần nữa) mọi thứ đã hoạt động.
Vui lòng cho tôi biết nếu có bất kỳ thông tin bổ sung nào là cần thiết.
Tên tệp .winmd do dự án của bạn tạo ra là gì? Tên của tệp .winmd phải là tiền tố của tên không gian tên. Vì vậy, đối với không gian tên đó, .winmd phải được đặt tên là A.winmd, A.B.winmd, A.B.Product.winmd, A.B.Product.Client.winmd, hoặc A.B.Product.Client.Common.winmd. Yêu cầu này được áp đặt bởi thời gian chạy cho các loại công khai trong các thành phần (dll). Tuy nhiên, các nhà thiết kế kết thúc tải exe của bạn như là một dll, vì vậy nếu bạn muốn sử dụng các nhà thiết kế, các lớp học của bạn phải phù hợp với cùng một yêu cầu đặt tên trong các dự án ứng dụng là tốt. –
[Nếu điều đó không hữu ích, vui lòng cho tôi biết và tôi có thể giúp điều tra.] –
Tuyệt vời! Tệp WinMD chỉ đơn giản là Client.winmd. Tôi dỡ bỏ dự án, thay đổi không gian tên gốc thành A.B.Product.Client, sau đó tải lại và xây dựng lại dự án. Tệp WinMD giờ đây được gọi là A.B.Product.Client và XAML tải chính xác. Đó chắc chắn là câu trả lời. Nếu bạn muốn thêm bình luận của mình làm câu trả lời, tôi sẽ đánh dấu nó. – basilard99