2009-07-16 30 views
30

Cách tốt nhất để tạo các lớp C# từ nhiều tệp lược đồ XSD là gì?Nhiều tệp lược đồ XSD cho các lớp C#

Một số tệp lược đồ XSD có thể có sự phụ thuộc vào khác, tôi đang cố gắng tránh các lớp C# trùng lặp được tạo ra.

Trả lời

38

Sử dụng chương trình XSD.EXE, nhưng chuyển tất cả của các lược đồ vào chương trình trên cùng một dòng lệnh.

Ví dụ:

> xsd /c qbxmltypes130.xsd QBUqbxmlops130.xsd QBUqbxmlso130.xsd QBUqbxml130.xsd 

sẽ phát ra một lớp có tên:

qbxmltypes130_QBUqbxmlops130_QBUqbxmlso130_QBUqbxml130.cs 

Trong trường hợp này đây là những Quickbooks Desktop SDK file XSD, và các tập tin cuối cùng có loại nó phụ thuộc vào trong lần đầu tiên 3 tệp. Nó sẽ không tự phát ra, nhưng với sự phụ thuộc của nó, nó hoạt động như mong muốn.

Lưu ý rằng có một khóa chuyển đổi /parameters:<file> cho phép bạn chỉ định tệp tham số dòng lệnh. Tôi nhớ sử dụng nó trong một dự án vì một lý do tương tự.

XSD.EXE tài liệu có định dạng tham số.

+2

Chỉ cần thêm một ví dụ "xsd.exe/classes/n: {your_namespace} {} file1 file2 XSD {} {XSD file3 } .xsd/out: {thư mục đầu ra của bạn} " – vivekp

+0

Không cần sử dụng Altova XML Spy để tạo các lớp C# từ XSD với nhiều tham chiếu từ bây giờ trở đi. – Joset

+1

Một bổ sung cuối cùng vào ví dụ tuyệt vời @vivekp đã cho: Tệp cuối cùng có tên trong chuỗi có vẻ là tệp được sử dụng để tạo tên tệp lớp. Vì vậy, ví dụ của anh ta sẽ tạo ra tệp lớp {thư mục đầu ra của bạn} \ {file3} .cs – PellucidWombat

27

Tôi đã tìm thấy một ví dụ trong tài liệu MSDN một chút thiếu. Dưới đây là một ví dụ thông số tập tin cho vấn đề này codemeit mô tả:

<xsd xmlns='http://microsoft.com/dotnet/tools/xsd/'> 
<generateClasses language='CS' namespace='Namespace.subnamespace'> 
    <schema>FirstSchema.xsd</schema> 
    <schema>AnotherSchema.xsd</schema> 
    <schema>LastSchema.xsd</schema> 
</generateClasses> 
</xsd> 
+1

Cảm ơn, @anony_mouse - Tôi đang tìm kiếm một ví dụ điển hình về cú pháp đó! – ewall

+6

nếu bạn gặp lỗi "tên đường dẫn hoặc tên tệp được chỉ định quá dài", hãy thử đặt trước ". \" Trước tệp cuối cùng và giải quyết sự cố, lưu ý rằng tệp đầu ra sẽ được đặt tên theo tệp cuối cùng .. – Peter

+0

@ Peter WOW cảm ơn – dpant

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