2010-03-29 30 views
17

Tôi đã sử dụng CodeSmith trong 2 năm qua và yêu thích những gì nó làm cho tôi. Tuy nhiên, tôi cũng biết về T4 được xây dựng trong Visual Studio và có thể làm một số công cụ khá mát mẻ quá. Dựa trên các cuộc trò chuyện với bạn bè T4 trong VS2010 T4 sẽ còn tốt hơn nữa.Visual Studio T4 vs CodeSmith

Vì vậy, câu hỏi đặt ra là: tôi có tiếp tục đi xe buýt CodeSmith hay đã đến lúc bắt đầu chuyển đổi tất cả các mẫu của tôi sang T4?

Cập nhật Có lẽ tôi không rõ ràng về cách tôi đặt câu hỏi. Rõ ràng là tôi sẽ không xóa các mẫu cs của mình và ngừng sử dụng chúng cho đến khi tôi có các mẫu mới hoạt động. Tuy nhiên, nó thậm chí còn đáng để nỗ lực vào thời điểm này? Liệu T4 tại thời điểm này cung cấp một lợi thế compleling hơn CodeSmith? Có một số tính năng hoặc tập hợp các tính năng bằng cách viết các mẫu của tôi cho T4 thay vì tôi sẽ thấy cải thiện 100X trong hiệu quả của tôi không?

+0

trả lời cho bản cập nhật của bạn: Không, T4 không có lợi thế hấp dẫn so với CodeSmith, ngoài việc được đưa vào VS2008 trở lên và do đó là "miễn phí" đối với người dùng VS. –

Trả lời

24

Tôi rất vui mừng và phấn khích về T4 và cố gắng chuyển đổi tất cả các công cụ CodeSmith của tôi thành T4 - chỉ để tìm hiểu có một vài điều sai với/thiếu T4.

  • không hỗ trợ cho tham số cho mẫu của bạn - bạn cần phải mã hóa cứng tất cả mọi thứ vào mẫu của bạn .....
  • Studio chủ Visual T4 là khá hạn chế
  • không hỗ trợ trực tiếp và dễ dàng cho nhiều file đầu ra từ một mẫu đơn

Check-out Kathleen Dollard của What Wrong with T4 bài đăng blog - cô ấy khá nhiều nữ hoàng của Code Generation trên NET, và cô ấy tiền nó lên rất độc đáo - tôi hoàn toàn đồng ý 100% với các vấn đề của mình. Tất cả trong tất cả, sau khi chơi nhiều và cố gắng, tôi đã từ bỏ phần lớn vào T4 - nó chưa sẵn sàng cho thời gian chính, ít nhất là không phải cho các loại mẫu mà tôi đang làm việc (chủ yếu là kiểm tra). các bảng cơ sở dữ liệu để trích xuất các giá trị, ví dụ như nền tảng của ORM tự chế, hoặc để trích xuất các hằng số và các thiết lập cấu hình, vv từ cơ sở dữ liệu)

Và từ thử nghiệm với T4 trong VS2010, tôi không chắc là bao nhiêu cố định, thực sự .... không nhiều, có vẻ như. Có một vài khái niệm thú vị khác (preprocessed templates, được cho là support for parameters v.v.) nhưng hầu hết các lỗi cơ bản vẫn có vẻ nán lại .....

Vì vậy, hiện tại: không ném ra CodeSmith !! Có lẽ T4 trong VS2016 sẽ chỉ là mạnh mẽ .... nhưng cho đến lúc đó .....

Resources:

+0

Cảm ơn. Điều này là nhiều hơn dọc theo dòng của những gì tôi đang tìm kiếm. Ví dụ, tôi có một mẫu tạo ra partials cho tất cả các lớp trong tệp edmx Entity Framework của tôi.Vì vậy, có thể vượt qua các tham số giữa các mẫu là phải. Có thể tạo ra nhiều hơn 1 tập tin từ 1 mẫu cũng sẽ thực sự tốt đẹp. – Jake

+0

@Jake: nếu bạn có nội dung trong VS (như trong tệp EDMX), bạn có thể thực hiện rất nhiều điều thú vị với T4, vì nó có thể dễ dàng phân tích cú pháp XML tạo nên EDMX. Ngoài ra, với Oleg Sych 'T4Toolbox, bạn có thể xuất nhiều hơn 1 tập tin từ một mẫu - nó chỉ là hư không gần như dễ dàng như nó phải là ..... –

+0

T4 chỉ là .NET và bạn có thể làm khá nhiều thứ trong T4 bạn có thể làm trong .NET. Nó không thực sự có những hạn chế mà bạn phàn nàn về, nó chỉ có thể không dễ dàng như bạn muốn nó được. Codesmith hy vọng tốt hơn T4 hoặc họ sẽ không hoạt động. –

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