2010-03-27 98 views
5

我在.Net中編寫了一個Windows服務,我想公開要由其他.Net代碼調用的類。具體來說,我有一個API,我想通過將放置在GAC中的DLL公開,並且我希望GAC中的DLL使用.Net Windows服務的類。我需要這種體系結構,因爲Windows服務中的代碼需要以與API的調用方不同的用戶/賬戶運行(該賬戶將在安裝時創建)。公開.Net服務

我的計劃是通過COM公開Windows服務類(regasm.exe註冊和tlbexp.exe創建類型庫),然後通過COM調用GAC DLL中的類(通過tlbimp.exe導入) 。但是我從tlbimp得到以下錯誤:

TlbImp:error TI0000:System.Runtime.InteropServices.COMException - 類型庫''是從CLR程序集導出的,不能作爲CLR程序集導入。

這意味着我的方法不會輕鬆工作。我只能認爲我可能需要一個C++ DLL作爲我的GAC DLL來調用COM調用的橋樑,但這似乎是一個討厭的解決方案。

我基本上在尋找建議。有誰知道如何將.NET中編寫的Windows服務的類暴露給其他.Net代碼?

回答

0

我會把所有的Windows服務邏輯在一個單獨的DLL來看看(egxdll )。 爲x.dll中的類定義一個接口。 將Windows Service和其他.Net項目中的引用添加到x.dll項目中。這樣你可以實現可重用性。