跨不同进程的C#库的单个实例

跨不同进程的C#库的单个实例,c#,.net,excel,dll,com-interop,C#,.net,Excel,Dll,Com Interop,我创建了一个C#.Net WinForms项目,该项目使用了我自己创建的几个库。现在我正在创建一个COM包装器,并希望通过VBA使用Excel文件中的相同库。但我不希望Excel创建库的新实例。我需要使用WinForms项目加载的库的相同实例。请建议一条路 WinForm App |- Library1.dll |- Library2.dll . Excel |-ComWrapper |-Library1.dll |-Library2.dll 我试图用图表的方式解释目前的情况。在上述情

我创建了一个C#.Net WinForms项目,该项目使用了我自己创建的几个库。现在我正在创建一个COM包装器,并希望通过VBA使用Excel文件中的相同库。但我不希望Excel创建库的新实例。我需要使用WinForms项目加载的库的相同实例。请建议一条路

WinForm App 
|- Library1.dll
|- Library2.dll 
. 
Excel
|-ComWrapper
|-Library1.dll 
|-Library2.dll

我试图用图表的方式解释目前的情况。在上述情况下,将创建Library1.dll和library2.dll的两个实例,因为它们是从不同进程调用的。我只需要在内存中有一个library1.dll和library2.dll实例。

实现这一点的唯一简单方法是将COM包装器注册为COM+对象,并在“激活”选项卡中将其配置为“服务器应用程序”。
然后,您需要在winforms应用程序和Excel文件中使用该COM+对象。

您不会阻止不同进程与启用COM的库通信。你可以阻止你自己的应用程序这样做,当然,如果没有一行代码,你很难说出你的实际要求。你想实现什么。两人之间是否有某种状态?在我的术语书中,“图书馆实例”没有条目。描述你正在努力完成的事情将有助于与IOK同舟共济的其他人,我将解释这个场景。“容易获得”和COM+在同一句话中?哈哈,很好;-)-“容易获得”的意思是他不需要创建任何自己的基础设施——我个人不会使用它。