2009-09-22 12 views
11

Tôi cố gắng để tải một file resx trong trang web .net tôi sử dụng:ResourceManager cố gắng để tải .resources không Resx nộp

ResourceManager rm = new ResourceManager("Project.Resource", Assembly.GetExecutingAssembly()); 

File Resource.resx là trong App_LocalResources thư mục và được thiết lập để được nhúng vào lắp ráp trên xây dựng.

Khi tôi cố gắng truy cập vào các file resx sử dụng:

rm.GetString("key"); hoặc rm.GetString("key", culture);

tôi nhận được một thông báo lỗi:

không thể tìm thấy bất kỳ tài nguyên phù hợp với văn hóa quy định hoặc văn hóa trung tính. Đảm bảo rằng "Project.Resource.resources" được nhúng hoặc liên kết chính xác vào lắp ráp "Dự án" tại thời điểm biên dịch hoặc rằng tất cả các cụm vệ tinh đều có thể tải và đầy đủ đã ký.

Lưu ý .resources ... bất kỳ ý tưởng nào về những gì đang diễn ra ở đây?

+0

Không phải tệp thiết kế cũng được tạo không? –

Trả lời

3

Tôi nghĩ cách bạn đang sử dụng ResourceManager là sai. Xem mục này post. Cũng lưu ý, khi bạn mở dấu nhắc lệnh Visual Studio, & chạy resgen.exe, nó nói nó được sử dụng để chuyển đổi các tệp tài nguyên từ một định dạng này sang định dạng khác (tức là resx thành tài nguyên). Tôi nghĩ, bạn sẽ cần phải chuyển đổi tệp của mình thành tài nguyên từ resx & rồi tải tệp bằng cách sử dụng resourceManager.

+1

Cảm ơn bạn đã cho tôi đi đúng hướng ... Tôi không nên sử dụng ResourceManager Tôi đã sử dụng cú pháp <% $ Tài nguyên: tên tệp, khóa%> trong trang của tôi thay vì –

1

Thêm tiện ích mở rộng .resx một cách rõ ràng.

Bạn cũng có thể sử dụng lớp được tạo tự động và sử dụng các thuộc tính của nó nếu phù hợp với dự án của bạn.

+0

Nếu tôi thêm .resx vào "Project.Resource", tôi nhận được lỗi tương tự nhưng đối với tệp Project.Resource.resx.resources –

+0

Xin lỗi, tôi đã bỏ lỡ .resx của bạn nằm trong App_LocalResources. Không có bài đăng nào của tôi áp dụng ... –

3

Tôi không chắc bạn đang sử dụng phiên bản .NET Framework nào.

Hãy thử channging cách bạn mang ResourceManager vào cuộc sống.

ResourceManager rm = 
    new ResourceManager("Project.Resource", 
         System.Reflection.Assembly.Load("App_LocalResources")); 

Nó sẽ hoạt động.

Điều này cũng được xem là thuộc tính tĩnh của lớp .designer.cs được tạo tự động của trình quản lý sắp xếp lại cụ thể.

13

Để tải Resx vào ResourceManager bạn cần xác định không gian tên

var rm = new ResourceManager("Namespace.ResxName", Assembly.GetAssembly()); 

hoặc bạn có thể nhận ResourceManager miễn phí nếu thiết lập truy cập Modifier bên Managed Resource Editor để nội bộ hoặc công cộng, sau đó VS sẽ tạo ResxName.Designer.cs

var rm = ResxName.ResourceManager; 
+1

+ 1 cho phương pháp truy cập tài nguyên thông qua mã Designer – Boggin

4

Có cách đáng ngạc nhiên đơn giản nguồn đọc bởi chuỗi:

ResourceNamespace.ResxFileName.ResourceManager.GetString("ResourceKey") 

Đó là giải pháp làm sạch và thanh lịch cho việc đọc các nguồn lực bằng các phím ở đâu "ký hiệu dấu chấm" không thể được sử dụng (ví dụ khi phím nguồn là tồn tại trong cơ sở dữ liệu).