应用程序域之间的独立工作目录
我有一个 .NET 应用程序,它创建多个单独的 AppDomain 来运行一些可插入代码,每个 AppDomain 都设置自己的 WCF 命名管道服务来与中央应用程序进行通信。
但是我想为每个应用程序域设置不同的工作目录,以便每个应用程序域中任何相对路径的基本文件夹都不同。因此,这些插件可以通过“./MyCustomFolder”以所有正常的文件处理方式创建自己的文件夹结构。
不幸的是,我发现 Directory.SetWorkingDirectory() 正在为整个过程设置它(不隔离到单个应用程序域),这导致一些插件写入其他插件目录。
是否可以更改不同应用程序域的工作目录,或者我是否需要启动全新的流程来完成我想要的工作?如果我需要整个流程来完成我之后要做的事情,您对尝试以稳定的方式有效管理父/子流程有何看法?
I have a .NET application that is creating several separate AppDomains to run some plugginable code, each of the AppDomains sets up its own WCF named pipes service to communicate with the central application.
However I want to set a different working directory for each AppDomain, so that the base folder of any relative path is different in each app domain. So these plugins can create its own folder structure in all the normal file handling ways by going "./MyCustomFolder".
Unfortunately I am finding Directory.SetWorkingDirectory() is setting it for the whole process (not isolated to a single app domain) this is causing some plugins to write in other plugin directories.
Is it possible to change the working directory for different AppDomains, or do I need to kick off brand new processes to do what I'm after? If I need whole processes to do what Im after what is your opinions on trying to manage parent / child processes effectively in a stable way?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
CurrentDirectory(或WorkingDirectory)是每个进程的。
但是,您可以在创建应用程序域时设置程序集探测路径。查看 AppDomainSetup 类。
CurrentDirectory (or WorkingDirectory) is per process.
You can however setup assembly probing paths when creating the appdomain. Look at the AppDomainSetup class.