RegSvcs.exe两次注册相同的dll

时间:2012-10-17 16:27:01

标签: .net com+ component-services

假设我在两个不同的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 +?

我的意思是我没有看到exe客户端应用程序,顺便说一下托管应用程序,如果我能够在注册时更改appname,那么在询问dll时它应该运行哪个COM +应用程序... < / p>

他们是否使用注册表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 app域中加载?

1 个答案:

答案 0 :(得分:0)

看起来加载器选择的dll与组件服务无关。从.net角度看COM +只是一个设置商店。因此,当在app域中照常加载给定的dll时,它会询问COM +存储本身是否存在(即具有相同版本和接口的dll)。如果它存在则会读取其COM +设置。如果不是,我认为它试图在COM +中自动调整自身(使用默认的COM +设置)。