2010-01-11 23 views
25

T4 đã tồn tại trong nhiều năm trong Visual Studio, nhưng không nhận được nhiều sự chú ý. Tuy nhiên, đối với những người biết điều đó, dường như có một số mục đích rất sáng tạo và hữu ích.Vì mục đích nào bạn đã sử dụng T4?

Tôi đang nghiên cứu một số cách khác nhau mà T4 được sử dụng và tôi sẽ đánh giá cao cách bạn có thể đã sử dụng nó cho các tình huống thực tế trong cuộc sống. Tôi chủ yếu quan tâm đến việc sử dụng phi tiêu chuẩn và sáng tạo.

Một số ví dụ thú vị:

  1. Phil Haack sử dụng T4 to create static CSS files from .less
  2. Để Generate WPF and Silverlight Dependency Properties using T4 Templates

Note: Tôi nhận ra đây là một câu hỏi thảo luận theo định hướng, nhưng câu trả lời có thể là hữu ích cho người khác. Tôi đã gắn thẻ nó là chủ quan và cũng được đánh dấu là "wiki cộng đồng", vì vậy hãy cho phép câu hỏi vẫn còn mở. Cảm ơn!

+1

Haha, trang web Phil Haack đang hiển thị màn hình màu vàng của cái chết [ASP.NET]. –

Trả lời

4

Tôi đã sử dụng Mẫu T4 trong sharp-architecture để tạo mọi thứ từ mô hình đến bộ điều khiển cho chế độ xem cơ bản.

Chắc chắn giá trị kiểm tra ra, ngay cả khi bạn chỉ muốn xem một số ví dụ tiên tiến của mẫu T4 trong hành động

2

SubSonic 3.0 tận dụng nặng của mẫu T4 cho tạo mã đơn vị của bạn.

Về cơ bản nó gọi số GetSchema() trên kết nối cơ sở dữ liệu của bạn và chạy từng bảng mà nó tìm thấy thông qua mẫu thực thể T4. Điều tuyệt vời về việc sử dụng T4 ở đây là nếu bạn không thích cách nó xử lý giản đồ cơ sở dữ liệu của bạn, chỉ cần chỉnh sửa mẫu.

Tôi đã tinh chỉnh T4 để xử lý cơ sở dữ liệu MySQL tốt hơn cho trường hợp của tôi, vì tôi sử dụng nhiều cột tinyint mặc định T4 ánh xạ tới các loại byte. Một chỉnh sửa nhanh cho T4 đã cho tôi loại mà tôi muốn thay cho các thực thể ứng dụng của tôi.

+0

Và nếu bạn thực sự tốt, bạn có thể làm cho nó hỗ trợ một cơ sở dữ liệu mà nó không có ý định. Tôi nhận được một phần của SubSonic cho PostgreSQL bằng cách chỉ chỉnh sửa các tệp mẫu. – Earlz

2

LINQ to SQL mẫu cho T4
http://l2st4.codeplex.com/

Templates tái tạo các chức năng của SQLMetal và LINQ to SQL designer lớp mã máy phát điện cho cả C# và VB.Net đòi hỏi chỉ Visual Studio 2008.

+0

Tôi đang xem xét chuyển đổi mã của mình để sử dụng các mẫu này. Bất cứ ai có bất kỳ nguồn tài liệu chứng thực hoặc một số lời khuyến khích về việc sử dụng l2st4? – jpierson

1

Mẫu T4 được sử dụng nhiều trong Nhà máy phần mềm dịch vụ web (Service Factory).

8

Tôi không phải là lớn fan của stringy-ness của app.config/web.config, vì vậy tôi sử dụng T4 để đọc các tệp đó và tạo một lớp AppSettings/WebSettings bao bọc các chuỗi kết nối và khóa/giá trị trong một lớp thực. Điều này có nghĩa là, miễn là tôi luôn sử dụng AppSettings.SomeValue để tham khảo ứng dụng của tôi.cấu hình, tôi nhận được kiểm tra thời gian biên dịch, đó là thực sự tốt đẹp.

+0

đẹp, bạn có mẫu T4 có sẵn ở đâu đó không? –

+6

Tôi làm bây giờ. http://sites.google.com/site/mattmc3/AppSettings_T4.zip – mattmc3

4

tôi sử dụng T4 để:

  1. Tạo CRUD SQL Server và Oracle kịch bản.
  2. Tạo Data Access Layer, dựa trên một cơ sở dữ liệu schema
  3. lớp Tạo Business Logic Layer, dựa trên một cơ sở dữ liệu schema
  4. Tạo webforms ASP.Net, cả HTML và codebehind, dựa trên một giản đồ cơ sở dữ liệu (scafolding).

Nó mang lại cho tôi một điểm khởi đầu cơ bản, nhanh chóng, đơn giản, cơ bản cho các dự án của tôi.

Và điều tốt nhất là tôi kiểm soát.

Here you can download an example of my templates

2

Tôi đã sử dụng để tạo ra T4:

  • proxy (thời gian thiết kế, cho tiêm/gói giám sát mã/ghi/... trong một api tiếp xúc rất cụ thể). thế hệ
  • giao diện cho một ánh xạ giao diện/lớp one-on-one
  • thay thế phản ánh mã của "trực tiếp/thực" gọi mã (bảo trì lợi thế của đang phản ánh, nhưng hiệu suất của mã thực tế) ví dụ khi cho phép truy cập vào các thuộc tính thông qua một trình chỉ mục, hoặc một cái gì đó theo hướng đó.
  • thế hệ xml cho dự án java (không thể tìm thấy giải pháp giống như T4 T4, dễ dàng chia sẻ trong công ty, T4 thật dễ dàng vì nó được xây dựng và bạn có thể chạy nó từ dòng lệnh)
  • tạo ra enums từ một cơ sở dữ liệu chủ (chúng tôi tạo ra cả hai cho một cơ sở mã delphi và cơ sở mã .Net)
Các vấn đề liên quan