2012-10-17 47 views
0

比方說,我有兩個不同的exe應用程序的兩個不同的bin文件夾中.net託管的dll(相同的版本,相同的代碼)。如果我使用RegSvcs.exe/appname:app1 pathtodll1/example.dll和RegSvcs.exe/appname:app2 pathtodll2/example.dll將兩個DLL註冊到COM +中。我可以假設一個exe會運行app1 com +,另一個exe會運行app2 com +?RegSvcs.exe註冊兩次相同的DLL

我的意思是我沒有看到EXE客戶端應用程序,一個託管應用程序的方式,如果我能夠在註冊時更改應用程序名稱,請求dll時應該運行它應運行的COM +應用程序......

他們是否使用註冊表CodeBase屬性來找出appname?

編輯: 看來我不能第二次註冊了。 然後我有另一個問題... 當app2運行並要求example.dll服務哪些DLL真的上傳了app1.exe旁邊的一個或從app2.exe?我真的需要在app2 bin文件夾中複製example.dll嗎?

如果我在混合中添加了第三個非com + dll(second.dll),這是由兩個exe文件和example.dll引用的,哪個second.dll將被加載到app2.exe應用程序域中?

回答

0

似乎加載程序選擇哪個dll與組件服務無關。 .net透視圖中的COM +只是一個設置存儲區。所以當一個給定的dll像平常一樣在應用程序域中加載時,它會詢問COM +存儲是否存在它自己(即具有相同版本和接口的dll)。如果它存在,那麼它讀取它的COM +設置。如果它不,我認爲它會嘗試在COM +中自動自我管理(使用默認的COM +設置)。