Depo dizininde olduğunu bildiğim bir kitaplık için "Foo.dll" gibi bir dosya adı var. Bunun için bir Assembly nesnesi oluşturmak istiyorum. Bu nesneyi sayfa olmayan bir sınıftan başlatmaya çalışıyorum, bu yüzden yolu almak için Request nesnesine sahip değilim. Assembly.Load() kullanmak için gereken yolu nasıl alabilirim?Bir derlemeyi ASP.NET'teki Bininden Yükle
cevap
Assembly.Load bir dosya yoluna gerek duymaz, bunun yerine AssemblyName gerektirir. Derlemenizin standart arama yolunda (yani, bin dizini) olduğunu biliyorsanız, derlemenin disk yolunu bilmeniz gerekmemelidir ... yalnızca derleme adını bilmeniz gerekir. senin toplanma durumunda, sizi varsayarak, derleme adı sadece "Foo" olmalıdır vb belirli bir sürümünü, kültür, gerek yok:
Assembly fooAssembly = Assembly.Load("Foo");
belirli bir sürümünü yüklemek için gerekiyorsa, size
Assembly fooAssembly = Assembly.Load("Foo, Version=1.1.2, Culture=neutral");
Genellikle, Assembly.load yerine Assembly.LoadFrom veya Assembly.LoadFile kullanmak istediğiniz: aşağıdaki yapardı. LoadFrom ve LoadFile, standart füzyon işleminin dışında çalışır ve derlemelerin birden fazla yüklenmesine, güvenli olmayan konumlardan vb. Yüklenmesine neden olabilir. Assembly.Load, bin, GAC gibi standart montaj konumlarını arayarak bir "standart" yük gerçekleştirir. vb. ve tüm standart güvenlik kontrollerini uygular.
Assembly.LoadFile (...) çalışır mı?
Mutlak yolu biliyorsanız, emin olun. Sanırım sorunun önemli kısmı bu. –
Tanımınıza göre, bu bir web uygulaması gibi geliyor, bu nedenle bir istekte bulunmayan bir eşzamansız iş parçacığına sahip değilseniz, HttpContext
erişiminiz olmalıdır. Buradan ihtiyacınız olan dosyaya Server.MapPath()'u kullanabilirsiniz.
Kullanıyorsa, kullanmam için tam bir örnek.
[TestMethod()]
public void ReadAssemblyResourceFileTest()
{
var res = SetupEngine.ReadAssemblyResourceFile("newdb.sql");
Assert.IsNotNull(res);
}
ps: Kaynaklar DLL Kütüphanesi (Kurul) kök altındaki bir klasör
public static string ReadAssemblyResourceFile(string resourcefilename)
{
using (var stream = Assembly.Load("GM.B2U.DAL").GetManifestResourceStream("GM.B2U.DAL.Resources."
+ resourcefilename)) {
if (stream == null) throw new MyExceptionDoNotLog($"GM.B2U.DAL.Resources.{resourcefilename} not found in the Assembly GM.B2U.DAL.dll !");
using (var reader = new StreamReader(stream))
{
return reader.ReadToEnd();
}
}
}
işlevini aramak. "Oluştur eylemi", her kaynak dosyasının "Gömülü Kaynak" (özellikler penceresinde) olarak işaretlemeyi unutmayın.
- 1. Kitaplık derlemeyi yapılandırmaConfigFields uygulamada
- 2. İmge Yükle İmge Yükle
- 3. Play Framework'de ayrıntılı bir derlemeyi nasıl yapabilirim?
- 4. Bir derlemeyi, yeniden adlandırılmadan Güçlü Adlandırılmış bir gruba dönüştürebilir miyim?
- 5. Dosyayı göreli bir yolla yükle
- 6. yükle modülleri
- 7. yükle sunucusuna
- 8. Derlemeyi C kütüphanesiyle MSVC++ bağlayıcısına nasıl bağlarım?
- 9. ILMerge işlemi tarafından oluşturulan bir derlemeyi nasıl imzalarsınız?
- 10. Commodore 64 üzerinde derlemeyi kullanarak bir disk dosyası yazmak
- 11. Basit Qt Uygulaması, bir sinyal/yuva eklendiğinde derlemeyi reddediyor
- 12. COM'a maruz kalan bir derlemeyi .NET'ten test etmek mümkün mü?
- 13. Kullanıcı tarafından yazılmış bir kurucu neden oluşturulan derlemeyi etkiler?
- 14. .NET'in eski (beta) sürümünü referans alan bir derlemeyi nasıl giderebilirim?
- 15. Bağımsız bir derleme ortamında Roslyn ile Paylaşılan Derlemeyi Kullanma?
- 16. Bir derlemeyi ve bağımlı derlemelerini MS-SQL'de nasıl güncelleştiririm?
- 17. Oynat arka plandaki sesi duraklat ve yükle olayları yükle
- 18. RestKit Resim Yükle
- 19. Tekil dosyayı karşıdan yükle
- 20. Yüklenmezse, paket (kitaplık) yükle
- 21. ASIHTTP: UIImage'ı yükle?
- 22. yükle etiketleri Vim
- 23. XmlDocument - dizgeden yükle?
- 24. Projemi github'a yükle
- 25. Apache HTTPD'yi yeniden yükle
- 26. Dosya Yükle ASP.NET 5
- 27. PHP'de Mcrypt'i Etkinleştirin Yükle
- 28. iOS'ta ABRecordID'den ABRecordRef'i Yükle
- 29. Django ModelForm Imagefield Yükle
- 30. Resim yükle facebook ios
alternatif olarak eğer bu montajda bir tipte bir nesneye sahipseniz, aşağıdaki gibi bir şey yapabilirsiniz: obj.GetType(). –