2010-03-27 14 views
5

.Net'te bir Windows Hizmeti yazdım ve diğer .Net kodu tarafından çağrılacak sınıfları açığa çıkarmak istiyorum. Özellikle, ben GAC yer alacak bir DLL üzerinden sergilemek istediğiniz bir API var ve GAC DLL Net Windows Hizmet sınıfları kullanmak istiyorum. Bu mimariye ihtiyacım var, çünkü Windows Hizmetinde kodun, API'nın arayıcısı olarak farklı bir kullanıcı/hesap olarak çalıştırılması gerekiyor (hesap yükleme anında oluşturulacak).Bir .NET Hizmetinin Açığa Çıkması

Planım Windows Hizmet sınıflarını COM aracılığıyla kaydettirmek (regasm.exe'yi kaydetmek ve tip kitaplığını oluşturmak için tlbexp.exe) ve ardından COM aracılığıyla GAC ​​DLL sınıflarını çağırın (tlbimp.exe aracılığıyla içe aktarılır) . Ancak tlbimp aşağıdaki hatayı alıyorum:

TlbImp: Hata TI0000: System.Runtime.InteropServices.COMException - Tip kütüphanesi '' bir CLR montaj ihraç edilmiş ve yeniden bir CLR montaj olarak içe olamaz.

Bu, yöntemimin kolayca çalışmayacağını ima ediyor. Ben sadece benim GAC DLL COM çağrıları çağırmak için bir köprü olarak bir C++ DLL ihtiyaç duyabileceğini düşünüyorum, ancak bu kötü bir çözüm gibi görünüyor.

Ben temelde önerileri arıyorum. .Net'de yazılan bir Windows Hizmetinin sınıflarını diğer Net kodlarına nasıl yazacağını bilen var mı?

cevap

0

kullanarak bakmak isteyebilirsiniz (egxdll). Sınıflarınız için x.dll dosyasında bir arabirim tanımlayın. Referansı, hem Windows Hizmetinde hem de diğer .Net projesinde x.dll projesine ekleyin. Bu şekilde yeniden kullanılabilirlik elde edebilirsiniz.

İlgili konular