2012-02-28 13 views
7

Tôi có tài nguyên chuỗi nhúng trong dự án .NET 4.0: Strings.resx và Strings.de.resx.Tại sao các nền văn hóa resx không tìm thấy trong các bài kiểm tra đơn vị?

Trong mã sản xuất các dây cục bộ chính xác được lấy ra, phụ thuộc vào giá trị của Strings.Culture:

Strings.Culture = new Culture("de"); 
string deString = Strings.Welcome; // 'Willkommen' 
Strings.Culture = new Culture("en"); 
string enString = Strings.Welcome; // 'Welcome' 

Nhưng trong đơn vị mã kiểm tra của tôi (sử dụng MSTest) các chuỗi từ 'Strings. de.resx 'không bao giờ được trả lại - tôi chỉ nhận được chuỗi từ Strings.resx, bất kể giá trị của Strings.Culture hoặc Threads.CurrentThread.CultureUICulture là gì.

Ai đó có thể trợ giúp?

+0

Điều này thường có nghĩa là các cụm vệ tinh không được triển khai. Bạn sử dụng khung kiểm thử nào? Đối với tất cả mọi thứ MSTest dường như được triển khai đúng cách. Nếu một cái gì đó không được, bạn có thể sử dụng DeploymentItemAttribute. –

+0

Tôi đang sử dụng MSTest (câu hỏi được cập nhật cho phù hợp). Các tệp resx có Build Action = 'Embedded Resource' trong assembly đang được thử nghiệm. Tôi nên sử dụng DeploymentItemAttribute như thế nào? – GarethOwen

Trả lời

7

Ok, tôi đã có thể tạo lại vấn đề này. Trước hết hãy thử tắt triển khai. Đi tới "local.testsettings" và bỏ chọn Deployment -> Enable Deployment. Khi cờ này được kiểm tra, VS dường như không triển khai các cụm vệ tinh cho tôi. Nếu bạn cần một số mục triển khai, sử dụng DeploymentItemAttribute:

[DeploymentItem(
    @".\YourProject\bin\Debug\de\YourProject.resources.dll", @".\de\")] 

hoặc sử dụng cùng một "triển khai" tab để chọn lắp ráp vệ tinh thích hợp.

+0

cảm ơn sự giúp đỡ của bạn - Tôi sẽ dùng thử – GarethOwen

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