2009-08-03 19 views
7

Şablondan kod üretmek için TextTransform.exe kullandığımda, bir argüman kullanmayı nasıl kullanabileceğimi bir örnek bulamıyorum. MSDN yılında argüman -a açıklamasını takip ediyor.:.TextTransform.exe aracından bağımsız değişken değeri şablona getir

"bir direktif işlemci için ad/değer çifti olarak direktif işlemci ve tanımlayıcı isteğe bağlıdır sorgulayabilir bir parametre belirtir Bu parametreleri verir Herhangi bir yönerge işlemcisi veya belirli bir yönerge işlemcisinin herhangi bir örneğine ilişkin belirtilmelidir. "

Şablonumda bağlantı dizesi ve benzerleri gibi bazı argümanlara ihtiyacım var. Benim fikrim argüman -a yardımıyla yapılandırma dosyasına bir yol bulmaktı.

Selamlar Anton Kalcik

GÜNCELLEME: Ben şablonda doğrudan parametrelerini okumak istiyorum, yeterince açık olmak.

cevap

7

Metin Şablonu Dönüştürme Araç Takımı (T4) Microsoft'tan çok iyi desteklenmemektedir. Sadece birkaç örnek. Daha fazla bilgi edinmek için Olegs Sychs blog adresine gidin. T4 burada çok derinden açıklandı.

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

Daha sonra şablonda Arayabileceğin şu şekildedir:

hostspecific="true" nitelik template için öğesi ekleyin:

Şablonumdaki TextTransform.exe parametreleri almaya çalışırken saate sonra ben bir çözüm buldum Oleg'in belirttiği gibi ResolveParameterValue.

Örnek:

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

oluşturulan dosyada olmalıdır oluşturduktan sonra: 'birdeğer'

+6

VS2010 ile, null veya boş dizgeyi 'Host.ResolveParameterValue (null, null," someKey ")' nin ilk 2 parametresinden birine geçirerek bir argüman null istisnasına neden olur. – CodingWithSpike

+0

Buradaki belgeler (burada) (http://msdn.microsoft.com/en-us/library/bb126245.aspx) aynı çözümü açıklamaktadır. – LuddyPants

1

-a argüman şu biçimde değerleri kabul eder:

<ProcessorName>!<DirectiveID>!<ParameterName> 

Bunlar şablon kodunda parametre değeri elde etmek amacıyla aramam lazım ITextTemplatingEngineHost.ResolveParameterValue yöntemin parametreleri de vardır.

+1

Merhaba Oleg, yanıt için teşekkür ederim

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

Çok şablon jeneratör diyoruz. ResolveParameterValue dosyasını * .tt dosyamda arayabileceğimi mi kastediyorsunuz? Parametre directiveId ve processorName için ne ayarlanmalıdır? Bir örnek verebilir misiniz? Saygılar Anton Kalcik –

İlgili konular