2009-08-03 33 views
7

Tôi không thể tìm thấy một số ví dụ làm cách nào tôi có thể sử dụng đối số -a khi tôi sử dụng TextTransform.exe để tạo mã từ mẫu. Trong MSDN được sau mô tả cho lập luận -a:..Lấy giá trị đối số từ TextTransform.exe vào mẫu

"Chỉ định một tham số mà một bộ xử lý chỉ thị có thể truy vấn cho như một tên/cặp giá trị Bộ xử lý chỉ thị và định danh là không bắt buộc Điều này cho phép các tham số để được chỉ định cho bất kỳ bộ xử lý chỉ thị nào hoặc bất kỳ ví dụ nào của một bộ xử lý chỉ thị cụ thể. "

Tôi cần một số đối số như chuỗi kết nối, v.v. trong mẫu của tôi. Ý tưởng của tôi là để có được một đường dẫn đến tập tin cấu hình với sự giúp đỡ của đối số -a.

Trân Anton Kalcik

UPDATE: Để được rõ ràng đủ, tôi muốn đọc các thông số trực tiếp trong mẫu.

Trả lời

7

Bộ công cụ chuyển đổi mẫu văn bản (T4) là từ Microsoft không được hỗ trợ rất tốt. Chỉ vài ví dụ. Nếu bạn muốn biết thêm, hãy truy cập Olegs Sychs blog. T4 ở đây được giải thích rất sâu sắc.

Sau giờ để cố gắng để có được các thông số từ TextTransform.exe trong mẫu của tôi, tôi tìm thấy một giải pháp:

Thêm hostspecific="true" thuộc tính để template yếu tố như sau:

<#@ template language="C#v3.5" hostspecific="true"#> 

Sau đó trong mẫu mà bạn có thể gọi ResolveParameterValue như Oleg đã đề cập.

Ví dụ:

<# 

string parameterTest = Host.ResolveParameterValue(null, null, "someKey"); 
WriteLine(parameterTest); 

#> 

Bạn gọi mẫu máy phát điện như vậy:

"C:\Program Files\Common Files\Microsoft Shared\TextTemplating\1.2\TextTransform.exe" -a !!someKey!someValue 

Sau khi tạo nên trong tập tin được tạo ra: 'someValue'

+6

Với VS2010, chuyển null hoặc chuỗi rỗng vào một trong hai tham số đầu tiên của 'Host.ResolveParameterValue (null, null," someKey ")' gây ra một ngoại lệ null đối số. – CodingWithSpike

+0

Tài liệu [tại đây] (http://msdn.microsoft.com/en-us/library/bb126245.aspx) cũng giải thích cùng một giải pháp. – LuddyPants

1

Đối số -a chấp nhận các giá trị trong các định dạng sau:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Đây cũng là các thông số của ITextTemplatingEngineHost.ResolveParameterValue phương pháp mà bạn cần phải gọi để có được giá trị tham số trong mẫu mã.

+1

Xin chào Oleg, cảm ơn bạn đã trả lời. Bạn có nghĩa là tôi có thể gọi ResolveParameterValue trong tệp * .tt của tôi không? Điều gì sẽ được thiết lập cho tham số directiveId và processorName? Bạn có thể cung cấp một số ví dụ? Kính trọng Anton Kalcik –

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