2012-06-18 25 views
9

Her ikisini de çözümümde bulunan bir T4 şablonunda bir sınıf kullanabilmem gerekir. Container.cs numaralı telefondan Container isimli bir dersim var. Metin şablonumda Erişim Container sınıfına erişmek istiyorum. Bunu nasıl yapacağım hakkında herhangi bir fikir. Böyle Temelde bir şey: gerçekte şablonunda Konteyner sınıfının işlevini kullanmak gerekiyorsaSınıfı bir T4 şablonu içinde kullanın

<#@ template language="C#" #>

Genelde

<# var container = new Container() #>

+0

T4 şablonları Başka bir seçenek [File.ReadAllBytes()] (http://msdn.microsoft.com/en-us/library/system.io.file.readallbytes.aspx) ve etmektir kodunuzu –

cevap

15

, sizin proje inşa ediyor derleme yükleme isteyeceksiniz. Bu, mecliste yer alacak kodun yenilenmesi için, derlemenizin yerleşik bir versiyonuna ihtiyaç duyduğunuzdan, dairesel bir bağımlılık ortaya çıkarır, bundan haberdar olun.

Eğer VS2010 kullanıyorsanız veya üzeri gibi bir şey kullanmak mümkün olacak:

<#@ assembly name="$(TargetPath)" #> 
<#@ import namespace="Your.Namespace" #> 

ve sonra Konteyner sınıfını kullanın.

Eğer VS2010SP1 veya üzerindeyseniz, bu, bellekte bu montajı kilitlemeyle ilgili herhangi bir probelemeye neden olmaz, ancak bundan daha önce olursanız, her bir neslin ardından Visual Studio'yu yeniden başlatmanız gerekir; projesi.

+2

göstermek Lütfen sonra [Assembly.Load()] (http://msdn.microsoft.com/en-us/library/h538bck7.aspx) belleğe bayt dizisi. Bu, yeni sınıfların doldurulmasını gerektirir 'new namespaces.class() 'ancak her seferinde Visual Studio'yu yeniden başlatmanız gerekmez. –

+0

Teşekkürler adam, Bu gerçekten harika çalışıyor. – user1396149

İlgili konular