2009-08-18 26 views
15

Tôi có một dự án VS có chứa: 1. Một hành động trước khi xây dựng chạy TextTransform trên một "template.tt" để tạo ra "generated.cs" 2. "tạo ra. cs "được liệt kê là một trong các tệp cần biên dịch (ví dụ: trong danh sách các tệp dự ánT4 chuyển đổi và xây dựng thứ tự trong Visual Studio

Khi tôi tạo dự án, hành động dựng sẵn được thực hiện," generated.cs "được tạo lại nhưng VS biên dịch trước đó Phiên bản của nó (mà tôi đoán nó được nạp vào bộ nhớ khi bắt đầu quá trình xây dựng)

Điều gì có thể được thực hiện để xây dựng sẽ sử dụng tệp cs mới được tạo ra (được tạo trong hành động dựng trước?

(lưu ý rằng trong trường hợp của tôi, đầu vào chuyển đổi văn bản là động nên không thể thực hiện được trong thời gian thiết kế)

Cảm ơn.

Trả lời

4

Tôi không nghĩ bạn cần một hành động dựng sẵn tùy chỉnh. Chỉ cần thêm tệp ".tt" vào dự án của bạn và đặt thuộc tính "Công cụ tùy chỉnh" thành "TextTemplatingFileGenerator". Bạn có thể muốn đảm bảo rằng các tệp * .generated.cs cũng được thêm vào dự án, nhưng tôi nghĩ rằng VS sẽ xử lý điều đó.

+6

Điều này dường như không hiệu quả đối với tôi. Tôi nghĩ Zvika đã nói rằng họ muốn mẫu T4 hoạt động ma thuật bất cứ khi nào dự án của anh được xây dựng. Đây là những gì tôi muốn. Mặc dù, tôi đang sử dụng T4MVC với ASP.NET MVC 3. Ví dụ, nếu tôi lấy một dự án xây dựng, hãy thêm một tệp mới sẽ được T4MVC chọn, sau đó xây dựng lại dự án, tôi không thấy sự thay đổi nên được thực hiện bởi T4MVC. Tôi phải kích hoạt một cách rõ ràng một bản cập nhật bằng cách kích chuột phải vào tệp .tt và chọn Run Custom Tool. –

+0

điều này sẽ chỉ tạo ra đầu ra khi bạn lưu tệp '.tt'. –

3

Hiện tại, giải pháp cho vấn đề này! Oleg Sych có một bài đăng trên blog của mình nêu chi tiết cách thực hiện công việc biến đổi tại thời điểm xây dựng.

Dưới đây là các nguồn: https://web.archive.org/web/20140116193428/http://www.olegsych.com/2010/04/understanding-t4-msbuild-integration/

Về cơ bản, bạn chỉ cần bao gồm T4 xây dựng các mục tiêu trong tập tin dự án của bạn và thiết lập thuộc tính TransformOnBuild là true.

Dưới đây là đoạn trích có liên quan:

<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> 
    <PropertyGroup> 
    <TransformOnBuild>true</TransformOnBuild> 
    </PropertyGroup> 
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TextTemplating\v10.0\Microsoft.TextTemplating.targets" /> 

Lưu ý rằng Microsoft.TextTemplating.targets tập tin đã được bao gồm SAU Microsoft.CSharp.targets.

+0

Điều này tạo ra các tệp nhưng bỏ qua không gian tên tương đối của chúng. làm thế nào tôi có thể vượt qua điều này? –

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