.net Excel RTD服务器部署

.net Excel RTD服务器部署,.net,deployment,com,rtd,.net,Deployment,Com,Rtd,我正在尝试在C#中开发一个与此类似的RTD服务器。RTD服务器需要另一个使用本机C-dll的.NET dll。.NET dll通过互操作调用本机C dll。 到目前为止,我已将这两个DLL复制到与.exe文件相同的目录中。我应该如何部署它们以便可以从COM服务器使用它们? 当前对本机库的调用如下所示 [DLLImport("xxx.dll", EntryPoint="yyy, CallingConvention=CallingConvention.Winapi] private static e

我正在尝试在C#中开发一个与此类似的RTD服务器。
RTD服务器需要另一个使用本机C-dll的.NET dll。.NET dll通过互操作调用本机C dll。
到目前为止,我已将这两个DLL复制到与.exe文件相同的目录中。我应该如何部署它们以便可以从COM服务器使用它们?
当前对本机库的调用如下所示

[DLLImport("xxx.dll", EntryPoint="yyy, CallingConvention=CallingConvention.Winapi]
private static extern yyy(ref zzz arg);

RTD服务器是进程外COM服务器吗?(您说的是“与.exe文件相同的目录”-哪个.exe文件?)RTD服务器是实现IRtdServer接口的组件对象模型(COM)自动化服务器。我想我只需要一个路径或在%path%中安装dll,我以前没有考虑过这一点。您是否通过P/Invoke(代码中带有Declare属性)调用本机C.dll?如果是这样,使P/Invoke调用工作的一种方法是,在对其进行任何其他调用之前,通过LoadLibrary显式地将C.dll加载到进程中。通过LoadLibrary调用,您可以显式地给出.dll.Yes的路径,这相当于Declare(在VB中使用)。请看这里:是-如果.dll已经加载到进程中(使用LoadLibrary),那么通过P/Invoke(DLLImport)进行的任何后续调用都将成功,因为.dll探测将发现它已经加载-它是如何加载的并不重要。虽然-.NET程序集加载的工作方式完全不同,但这对托管(.NET)程序集不起作用。使用Excel DNA,我显式设置AppDomain的ApplicationBase,以便.NET加载程序可以找到与外接程序位于同一目录中的托管程序集。您可以尝试不推荐的SetPrivateBinPath调用,但我最近没有尝试过。