2017-12-08 12 views
9

Tôi đang sử dụng TextTransform.exe để tạo nhiều tệp C++. Vì công cụ không được hỗ trợ trực tiếp trong Visual Studio cho các dự án C++, tôi gọi nó bằng dòng lệnh (inspired by T4 Generating C++ Code).C++ chuyển đổi mẫu T4 bỏ qua tệp đầu ra

Để tạo nhiều tệp tôi sử dụng https://github.com/areve/Entity-Framework-T4-Templates/blob/master/src/dev/MultiOutput.tt đó là lý do tại sao tôi không cần đầu ra tiêu chuẩn do công cụ tạo ra bình thường.

tôi gọi TextTransform.exe như:

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe" 
-out "<what to put here that NO file is generated?>" 
C:\Test.tt 

Tôi đang sử dụng Microsoft Windows. Có thể có một "hack" để cung cấp bất kỳ loại char đặc biệt nào sẽ được chương trình chấp nhận nhưng nó sẽ không thể thực sự tạo ra một tập tin từ nó.

Có khả năng cung cấp bất kỳ lệnh nào tạo tệp NO khi tôi thực thi lệnh này không?


Cập nhật

Như đã đề cập bởi @ImprobabilityCast sử dụng NUL là một con đường để đi. Nó không tạo ra bất kỳ tập tin nhưng tùy chỉnh xây dựng nơi tôi chạy file tt với được không với thông điệp:

Performing Custom Build Tools 
CUSTOMBUILD : error : FileStream will not open Win32 devices such as disk partitions and tape drives. Avoid use of "\\.\" in the path. 

tôi đạt được những gì tôi muốn, nhưng nó không phải như vậy "đẹp" mà việc xây dựng hành động nào bị lỗi.

Trả lời

0

Tôi đã tìm thấy một giải pháp satisfing cho vấn đề của tôi. Vì Microsoft Visual Studio cho phép các công cụ xây dựng tùy chỉnh nhập nhiều dòng, tôi nhận ra rằng tôi có thể xóa tệp được tạo bởi TextTransform.exe mà tôi không cần.

Vì vậy, các lệnh tôi đưa vào "Command Line" containt hai dòng bây giờ:

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\TextTransform.exe" -out "%(DefiningProjectDirectory)$(TempOutputFile)" C:\Test.tt 
DEL /F "%(DefiningProjectDirectory)$(TempOutputFile)" 

Dòng đầu tiên là TextTransform gọi thực tế trong đó sản xuất cho tôi tất cả các file tôi muốn bao gồm các tập tin đầu ra tôi không cần nhưng không thể dừng lại để được tạo ra. Dòng thứ hai chỉ xóa tôi tệp mà tôi không cần.

Lệnh này dự kiến ​​biến dự án sẽ gọi "TempOutputFile". Bằng cách này, tôi bỏ qua bất kỳ lỗi đánh máy nào. Ví dụ:

<PropertyGroup Label="Globals"> 
    <TempOutputFile>DoNotCheckin.h</TempOutputFile> 
</PropertyGroup> 
1

Không. Cách chuyển đổi văn bản được xây dựng chỉ được cho là tạo ra một tệp đầu ra duy nhất. Đa đầu ra là một sự tiến hóa hợp lý cho các mẫu T4 nhưng Microsoft đã không phát triển nó trong nhiều năm nay.

Mã mà bạn đang sử dụng (như tôi) về cơ bản là một hack xung quanh điều đó. Nó sử dụng một cách rất xấu xí khi sử dụng EnvDTE để thao tác hệ thống dự án có thể sẽ không hoạt động vào một trong những ngày này khi MS quyết định viết lại hệ thống đó (và người ta có thể tranh luận ngày đó đang đến).

T4-biên tập viên, ví dụ, có một cách hơi khác nhau để đạt được điều tương tự, nhưng bạn có thể thấy rằng sản lượng vẫn tạo ra "hồ sơ giả":

http://t4-editor.tangible-engineering.com/blog/how-to-generate-multiple-output-files-from-a-single-t4-template.html

+0

Cảm ơn câu trả lời của bạn Hugo. Tôi biết nó không được hỗ trợ và tôi biết về EnvDTE hack xung quanh. Tôi tìm kiếm một hack xung quanh trong hack xung quanh ;-) –

6

Không chắc lý do tại sao bạn don không muốn các tệp, nhưng ...

Trong linux, chúng tôi có một điều tuyệt vời được gọi là /dev/null về cơ bản là khoảng trống trống chỉ dành cho những thứ như thế này. Tôi đã làm một tìm kiếm nhanh, và Windows có equivilent riêng của nó: NUL

Như vậy, lệnh bạn muốn là:

"C:\Program Files (x86)\Common Files\microsoft shared\TextTemplating\14.0\ 
TextTransform.exe" -out NUL C:\Test.tt 
+0

Cảm ơn bạn đã trả lời của bạn. Tôi chắc chắn sẽ kiểm tra điều đó. Tôi không muốn tập tin chuẩn được tạo bởi công cụ này vì tôi tự tạo nhiều tập tin trong tập tin tt. –

+0

Xem câu hỏi được cập nhật của tôi. Có lẽ bạn cũng có ý tưởng khác về cách khắc phục điều đó. –

+1

Đó là một điều khó khăn. Có thể có một cách khác để làm những gì bạn đang làm. – ImprobabilityCast

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