2010-04-14 14 views
24

, çizgi'Anonim Olarak Barındırılan DinamikMethods Derlemesi' tam olarak nedir ve manuel olarak nasıl yükleyebilirim? Bir .NET geliştiricisi olarak

'<process name>' (Managed): Loaded 'Anonymously Hosted DynamicMethods Assembly' 

muhtemelen size tanıdık. Sorum şu basit ve basit: Bu 'Anonim Olarak Barındırılan DynamicMethods Assembly' tam olarak nedir ve bunu (önceden) elle yükleyebilir miyim? Öyleyse nasıl? Bu Assembly.Load (...) ile yapılabilir mi?

+1

Bu bana tanıdık gelmedi! Ama daha yeni gördüm ve ne olduğunu bilmek istiyorum. –

cevap

27

System.Reflection.Emit, IL yönergeleri yayarak dinamik olarak oluşturulmuş kod oluşturmanıza izin veren sınıflar içerir. DynamicMethod ve AssemblyBuilder sınıfları bunu yapmak için çalışma atlarıdır. IL normal olarak bir montajdan yüklenir, ancak IL'yi dinamik olarak oluşturduğunuzda hiçbir montaj yoktur. Ancak, bir derleme nesnesi, IL kodunun konteyneri olarak hareket etmek için gereklidir ve AppDomain.DefineDynamicAssembly() tarafından bir "sahte" yaratılır. Hata ayıklayıcı bildiriminde gördüğünüz budur.

Assembly.Load() yöntemini kullanamazsınız, derleme dinamik olarak oluşturulur.

+0

Cevabınız için teşekkürler. Bu dinamik olarak oluşturulan derleme nesnesinin ne zaman oluşturulduğunu belirlemenin bir yolu var mı? – dbaw

+0

Hata ayıklayıcı bildirimi iyi bir ipucudur. –

+0

Özür dileriz, 'etkilemede' olduğu gibi 'belirle' demek istedim, 'belirle' değil :-) Yani dinamik montaj nesnelerinin yüklenmesi bir ileri veya geciktirebilir mi? – dbaw

2

Bu DynamicMethods içindir ve bu nedenle ifadeler için de geçerlidir.

El ile yükleyemezsiniz.

+5

Peki, neden olmasın? :-) – dbaw

0

Bu, çalışma zamanında yayılan bir montaj olduğunu tahmin ediyorum. Düzeneği diske kaydetme gereği duyulmadığından manuel olarak yüklemek mümkün olmayabilir (bu durumda, kod montajı bitirdiğinde - hafızada) - doğrudan montajda tanımlanmış türleri kullanacaktır - yükleme gerektirmez

Daha fazla bilgi için documentation in msdn'a bakın.

En iyi