6

Tôi có một tệp tài nguyên có tên Localize.resx, chứa các chuỗi tiếng Anh. Tôi đã sao chép và dán nó vào cùng một thư mục (App_GlobalResources), VS tạo một bản sao, tôi đổi tên bản sao thành Localize.sl.resx và bản gốc thành Localize.en.resx. Bây giờ mọi thứ trong các tệp codebehind (Localize.en.designer.cs) đã biến mất. Xóa tệp trình thiết kế và chọn Chạy Công cụ Tùy chỉnh sẽ tạo tệp thiết kế mới nhưng hoàn toàn trống.Tệp tài nguyên (RESX) đã bị lỗi

Tôi vẫn có tất cả các chuỗi của mình trong cả hai resx nhưng các tệp thiết kế đã biến mất (trống) để ứng dụng không xây dựng.

Mọi đề xuất?

Đây là bên trong Vs 2010 với giải pháp ASP.NET MVC.

Trả lời

8

Đây là những gì ASP.NET documentation nói về tệp tài nguyên.

Nó không nói cụ thể về các tệp thiết kế codebehind được tạo khi đang bay nhưng nếu bạn đọc văn bản in đậm một cách cẩn thận, về cơ bản, bạn cần tệp cơ sở không có ngôn ngữ được chỉ định và tệp sẽ bao gồm mã được tạo tự động.

"Khi bạn tạo tệp tài nguyên, bạn bắt đầu bằng cách tạo tệp .resx cơ sở. Đối với từng ngôn ngữ bạn muốn hỗ trợ, hãy tạo một tệp mới có cùng tên tệp. Nhưng trong tên, hãy bao gồm ngôn ngữ . hoặc ngôn ngữ và văn hóa (tên văn hóa) Đối với một danh sách các tên văn hóa, xem lớp CultureInfo Ví dụ, bạn có thể tạo các tập tin sau đây:.

• WebResources.resx

các tập tin nguồn cơ sở. Đây là tệp tài nguyên mặc định (dự phòng).

• Web Tài nguyên.es.resx

Tệp tài nguyên cho tiếng Tây Ban Nha.

• WebResources.es-mx.resx

Tệp tài nguyên dành riêng cho tiếng Tây Ban Nha (Mexico).

• WebResources.de.resx

Một tập tin tài nguyên cho Đức."

Tôi thực sự chưa bao giờ nhận thấy điều này trước đây, nhưng khi tôi đã đi kiểm tra các dự án cũ của tôi, tôi thấy họ đều có các tập tin cơ sở Vì vậy, tôi chỉ sửa chữa nó để làm theo quy ước đó và nó hoạt động ngay bây giờ

+0

Có, nhưng chỉ có một tập tin của tất cả với cùng một tên tập tin gốc được mã thiết kế tự động tạo ra và đó là tập tin với không có trình chỉ định ngôn ngữ. Nó có ý nghĩa bởi vì trong mã khi bạn sử dụng nó, bạn chỉ sử dụng một tên lớp (giả sử chúng ta đang nói về các tài nguyên toàn cầu và các tài nguyên đó nằm trong vùng tên tài nguyên, theo mặc định). – mare

+0

Xin lỗi @mare, tôi đã sai :) resx là cấu trúc "xml type" có chứa các chuỗi. bạn đang wright mặc dù, chỉ có một mã phía sau, mà một trong những được sử dụng để liên kết resx để resourcemanager. ALTOOUUUGGHHH ... nó tạo ra một tệp cs cho mỗi resx (tất cả trống ngoại trừ một mặc định) – Nealv

2

Nếu tôi là bạn, tôi sẽ:

tạo tệp resx mới; mở thẻ cũ; Nhấn ctrl + a trong dấu cũ; Nhấn ctrl + v trong hình mới; Lưu tài khoản mới; Xóa ảnh cũ; Đổi tên tên mới :)

Điều này sẽ giải quyết được sự cố nhanh chóng. Bạn cũng có thể kiểm tra xem tệp cs có bị loại trừ khỏi tệp hay không bằng cách nhấp vào nút hiển thị tất cả

+0

điên loạt các bước :)) –

+0

Bạn biết đấy, điều này thực sự hoạt động cho đến khi tôi đổi tên tệp mới, trước khi Resource1.resx và có tệp thiết kế đầy đủ, sau khi đổi tên thành Localize.sl.resx tất cả mã trong tệp thiết kế đã biến mất. – mare

+0

hmmm, lạ, là công cụ tùy chỉnh của bạn được đặt thành GlobalResourceProxyGenerator. @edit Ngoài ra, hãy kiểm tra xem bạn có xóa thư cũ hay không, trong thư mục windows của bạn (kiểm tra bên ngoài VS) của bạn resx cũ VÀ cs và lớp thiết kế sẽ bị xóa. Tôi nghĩ rằng họ vẫn còn đó, nhưng chỉ bị loại trừ khỏi dự án của bạn trong VS – Nealv

9

Tôi đã có cùng một vấn đề - Designer.cs tập tin không có mặt cho một số tệp resx.

Việc sửa chữa là để thiết lập các thuộc tính cho file resx:

Build Action - Embedded Resource 
Custom Tool - PublicResXFileCodeGenerator 
+1

Giải pháp tốt đẹp .... – MDDDC

0

Xin lỗi cho việc sử dụng này để viết nhận xét. Danh tiếng của tôi thực sự là ít hơn 50 = (nhưng tôi nghĩ rằng điều này có thể là quan trọng quá.

Điều này đề cập đến câu trả lời của Alvis: Giải pháp của bạn đã làm được điều đó. . mã thiết kế tập tin từ nội bộ cho công chúng Nếu không tôi đã nhận XmlParseExceptions khi cố gắng truy cập vào resx trong XAML

Edit:.. Vì vậy referes này để C#/WPF có thể là khác nhau trong ASP.NET

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