MEF kullanıldığında temel bir şey eksik. Her şeyin aynı mecliste olduğu örnekleri ve basit bir konsol uygulamasını kullanarak çalışıyorum. Daha sonra çeşitli varlıkları içeren ayrı bir projeye bazı ithalat ve ihracat yaptım. Bu varlıkları bir MS Testinde kullanmak istiyorum, ancak kompozisyon aslında hiç bitmedi. Kompozisyon malzemelerini söz konusu bir varlığın yapıcısına taşıdığımda işe yarıyor ama bu kesinlikle yanlış. GetExecutingAssembly sadece test sürecini "görüyor" mu? Yeniden kapları ne kaçırıyorum? Konteyneri bir testte kullanma şansını denemeye çalıştım. MEF docs hala çok yetersiz ve farklı bir projeden varlıklarını kullanan bir uygulamanın (veya MS Testinin) basit bir örneğini bulamıyorum ...MEF diğer montajlardaki parçaları bulamıyor
cevap
.NET'te, her bir exe veya DLL dosyasına derleme adı verilir. Bu nedenle, "yürütme işlemini" temel alan bir katalog oluşturduğunuzda ve uygulama giriş noktasında kullandığınızda, yalnızca exe projesinde tanımlanan parçaları da dahil edersiniz. DLL'lerde tanımlı herhangi bir parça almazsınız.
deneyin değiştirerek bu: bundan
var catalog = new AssemblyCatalog(Assembly.GetExecutingAssembly());
:
var catalog = new AggregateCatalog(
new ComposablePartCatalog[]
{
new AssemblyCatalog(Assembly.GetExecutingAssembly()),
new DirectoryCatalog(".")
});
düzenleme: Sadece basit bir çözüm olduğunu keşfetti:
var catalog = new DirectoryCatalog(".", "*");
() Aslında, bir montaj birden çok dosyadan oluşabilir, ancak bu nadiren kullanılır. Terim ayrıca yan yana COM için kullanılır.
Evet. Kompozisyondan önce kataloğunuza (ithalat ve ihracatla birlikte) montajınızı eklediğinizden emin olmalısınız. Bu şekilde uygun parçaları bulabilir.
GetExecutingAssembly tam olarak söylediği şeyi yapar - şu anda çalıştırılan derlemeyi alır, yani bu, söz konusu kodun yazılı olduğu anlamına gelir. Sizin durumunuzda, bu test kütüphanesi değil, "kütüphane" projenizdir.
Sınamanızı kitaplık projesini kataloğa açıkça ekleyin ve büyük olasılıkla beklediğiniz gibi çalışacaktır.
- 1. Birlik diğer GameObject betiğini bulamıyor
- 2. MEF
- 3. MEF: CreationPolicy.NonShared
- 4. MEF Bağımlılıklar ve sürümler
- 5. MEF: DirectoryPartCatalog
- 6. Java free spot parçaları
- 7. Birden fazla MEF parçası yüklenemiyor
- 8. Mono ve MEF Uyumlular.
- 9. MEF: ComposeParts eksik
- 10. MEF + WCF Service Host?
- 11. MEF kapsayıcısına örnek ekleme
- 12. MEF ve FABRİKA FABRİKASI
- 13. Bir MEF İthalat Mı?
- 14. MEF GetExportedValue meta verileriyle
- 15. MEF Constructor Enjeksiyon
- 16. Prism v4: Unity veya MEF?
- 17. JIRA'daki bağlantı parçaları
- 18. PRISM + MEF - İthalat ve ImportMany
- 19. Caliburn.Micro ve MEF on wpf
- 20. Lazy Yükleme DLL'leri MEF ile
- 21. NET'te MEF için Java eşdeğeri
- 22. Animasyon parçaları ve arka yığın
- 23. Parçaları değiştirme ve yön değiştirme
- 24. Rails parçaları yükleme 3 uygulama
- 25. nasıl MEF eklentileri olan her DLL sürüm numarasını alabilirim?
- 26. FragmentSpacePagerAdapter ile görünümlerdeki parçaları/görünümleri güncelleme
- 27. bundle.js'yi bulamıyor
- 28. Hata bulamıyor
- 29. İstisna bulamıyor
- 30. Sembolü bulamıyor