2009-08-10 39 views
5

Tôi đang xem xét một số công việc cập nhật các lớp được tạo từ xsds. Tôi nghĩ rằng đây sẽ là một sử dụng tuyệt vời của các mẫu T4, nhưng tôi không thấy bất kỳ ví dụ về những người làm điều này. Về cơ bản, tôi muốn làm những gì Linq to XSD đã làm, nhưng không bao gồm mục tiêu xây dựng alpha trong một giải pháp sản xuất.Bất kỳ ai biết về bất kỳ mẫu T4 nào để tạo các lớp từ xsd?

Mọi liên kết có liên quan không?


Bây giờ là một wiki. Lưu trữ các câu trả lời có liên quan của bạn tại đây.

Trả lời

3

Tôi hiện đang sử dụng xsd2code.net, tìm tại đây: http://xsd2code.codeplex.com/. Rất nhiều lợi ích:

  • mã nguồn mở, vì vậy bạn có thể điều chỉnh/hack nó

  • thay thế mảng với danh sách hoặc thậm chí riêng loại bộ sưu tập tùy chỉnh của bạn

  • chạy từ dòng lệnh, hoặc chạy như một addin studio trực quan (nhấp chuột phải xsd, yêu cầu tạo)

Tôi cũng thích rằng bạn có thể chạy nó trên một tệp xsd duy nhất nd nó sẽ không thổi lên nếu tham chiếu xsd của không thể được tìm thấy (như thế nào xsd.exe không). Vì vậy, thật dễ dàng để chạy nó trên các tệp riêng lẻ, trong trường hợp bạn chỉ muốn cập nhật nhanh trên một tệp.

Tuy nhiên, T4 cũng là một tùy chọn, tôi vừa mới tìm được T4 XSD và tìm thấy một số giải pháp nói về điều này.

+0

Tôi nghĩ đây là giải pháp tốt nhất vào thời điểm này. Một linh hồn tốt hơn có lẽ là để tránh tình trạng bắt đầu. – Will

+0

Để cập nhật về điều này: Im hiện đang xem xét dự án này- http://oxmlibrary.codeplex.com/ - Có vẻ như một chút hackish nhưng nhiều hơn "hackable" nếu điều đó có ý nghĩa. –

+0

Tôi sẽ quay lại làm điều này một lần nữa. Tránh có thể là tốt nhất, nhưng trong trường hợp tiêu chuẩn công nghiệp đã được định nghĩa trong xsd, việc tạo các lớp từ lược đồ là một hoạt động rất hợp lệ. Mặc dù không có nhiều niềm vui. –

1

Tôi thấy XSD rất khó sử dụng làm mô hình để tạo mã. Nó là quá linh hoạt và phức tạp để được thực tế cho nhu cầu của tôi. Trình thiết kế/bộ tạo dữ liệu được đánh máy mạnh mẽ là một ví dụ tuyệt vời về một nỗ lực sử dụng XSD làm mô hình tạo mã. Nó hoạt động OK hầu hết thời gian, nhưng không hỗ trợ tất cả các lược đồ có thể bạn có thể ném vào nó. Mặt khác, XSD không thể đại diện cho thông tin cần thiết để tạo ra các bộ điều hợp bảng trực tiếp, vì vậy các phần mở rộng cụ thể của DataSet đã được tạo ra.

Nếu bạn quyết định tiếp tục và sử dụng XSD làm mô hình, có thể bạn sẽ muốn chọn một tập hợp con đơn giản, đủ cho những gì bạn cần tạo. Một cách tiếp cận có thể là tải giản đồ XSD vào một đối tượng Dataset và sử dụng đối tượng Dataset này làm mô hình. Siêu dữ liệu DataSet đơn giản hơn rất nhiều để truy cập hơn XSD có mục đích chung. Điều này cũng sẽ cho phép bạn sử dụng trình thiết kế DataSet hiện có trong Visual Studio để chỉnh sửa mô hình của bạn.

+0

Thế hệ đang cho các lớp học mà sẽ giữ xml deserialized. Hoặc là tôi xây dựng các mô hình của riêng mình và phân tích cú pháp xml vào chúng, hoặc chỉ deserialize các đối tượng từ xml trực tiếp. Tìm kiếm một giải pháp nhẹ hơn so với các tập dữ liệu ... một cho phép tôi viết một phần các lớp cho dữ liệu deserialized. – Will

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