2009-10-28 42 views
6

Điều này có vẻ giống như một câu hỏi bất thường, nhưng tôi tò mò như thế nào tôi có thể thêm một cột bổ sung để thiết lập tập tin resx (vì vậy tôi sẽ có một cái gì đó như "tên, giá trị, bình luận, foo")Thêm tập tin resx cột tùy chỉnh

Tôi đã xem xét trực tuyến và chưa nghe nói về bất kỳ ai khác đang cố gắng như thế này, nhưng tôi nghĩ có thể thực hiện điều này bằng cách viết trình đọc và ghi lại mới. Chỉ muốn biết nếu có ai có hiểu biết về vấn đề này, chủ yếu là tôi định sử dụng điều này để lưu trữ thư và ghi lại chúng với mức độ ưu tiên được lưu trữ trong tệp tài nguyên (cột foo trong trường hợp này)

+0

Đưa tín dụng cho Mikael trên trang này, mặc dù tôi không thể tạo người đọc và người viết tùy chỉnh để studio trực quan cho phép tôi có thêm cột, tôi có thể sửa đổi giản đồ miễn là tôi không Nếu có ai có thêm đầu vào về cách tạo ra một người đọc làm việc/nhà văn cho một tập tin resx 3 hoặc nhiều hơn tôi sẽ đánh giá cao nó –

+0

Tôi đã chỉnh sửa câu trả lời của mình. Dường như với tôi trình soạn thảo VS tích hợp được khóa theo định dạng resx mặc định. –

Trả lời

5

Bạn có thể mở tệp resx với trình soạn thảo XML và sửa đổi lược đồ, nhưng trình soạn thảo resx được xây dựng trong Visual Studio sẽ loại bỏ bất kỳ cột nào mà bạn thêm thủ công vào lược đồ.

Nhưng bằng cách tạo trình đọc của riêng bạn, điều đó là có thể.

[Chỉnh sửa] Tôi đã sao chép ResXResourceReader/Writer từ khung .Net, nhưng khi tôi thêm chúng vào tệp .resx, Trình quản lý tài nguyên được quản lý trong .Net sẽ phát ra lỗi. Đề xuất tốt nhất của tôi là thêm cột mới vào giản đồ và sử dụng một trình chỉnh sửa khác như một cột tại số http://madskristensen.net/post/A-NET-resource-editor-application-for-resx-files.aspx. Chỉ cần sửa đổi mã để tính thêm cột của bạn.

+0

là có cách nào để ghi đè lên trình soạn thảo Visual Studio mặc định? Nó sẽ là tốt đẹp để sử dụng trình soạn thảo nếu có thể, nhưng tôi có thể viết ứng dụng nhỏ của riêng tôi để xử lý cột mới nếu cần thiết. Tôi chủ yếu quan tâm đến "Visual Studio sẽ loại bỏ bất kỳ cột mà bạn thêm" một phần, vì tôi không muốn nó chỉ thả các ưu tiên khai thác gỗ hoặc bất cứ điều gì khác mà có thể được thêm vào. –

+0

Tôi hơi sớm với câu trả lời của mình. Chúng được loại bỏ do tham chiếu trong tệp resx tới System.Resources.ResXResourceReader và System.Resources.ResXResourceWriter. Nếu bạn kế thừa hoặc triển khai IResourceReader trong trình đọc/ghi của riêng bạn và đặt dll vào GAC, tôi chắc chắn bạn có thể mở rộng lược đồ và thêm một cột khác. –

+0

trông giống như tôi sẽ phải nhận được về điều này, và với bất kỳ may mắn sẽ trở lại trong một vài ngày để kiểm tra câu trả lời của bạn. –

1

Hãy thử sử dụng một hệ thống đặt tên đơn giản để lưu trữ các cặp khóa-giá trị cho "tên" của bạn, ví dụ:

name->"value" 
name-comment->"comment value" 
name-foo->"foo value" 

này sẽ cho phép bạn lưu trữ bất kỳ số lượng tên-Key-> cặp giá trị cho bạn " cột mới ".

Nếu yêu cầu của bạn phức tạp hơn & tinh tế, sau đó xem xét việc viết trình đọc/ghi tài nguyên của riêng bạn.

Ngoài ra, điều này có vẻ như bạn đã có yêu cầu phù hợp hơn với bảng cơ sở dữ liệu. Hãy xem sử dụng SQLite làm cửa hàng dữ liệu, có thể.

+1

bạn đang phải trên ý tưởng cơ sở dữ liệu, tôi thực sự đang cố gắng tránh xa điều đó vì nó sẽ làm cho việc chuyển ứng dụng sang các máy khác sẽ cần đến dữ liệu được lưu trữ khó hơn. –

+0

SQLite có thể nhúng trong ứng dụng của bạn. Bạn có thể dễ dàng di chuyển nó xung quanh giữa các máy (hoặc di chuyển tệp dữ liệu của nó) mà không cần bất kỳ loại bước cài đặt bổ sung nào. Tuy nhiên bạn mất tất cả những thứ tốt đẹp của việc sử dụng các tập tin tài nguyên ... Stick với gợi ý đầu tiên của tôi! –

+0

ghi nhớ lý do khác để sử dụng tệp resx là vì chúng tôi muốn quốc tế hóa sản phẩm của mình. –

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