2011-01-20 11 views
4

プラグイン可能なコードを実行するためにいくつかの別々のAppDomainsを作成している.NETアプリケーションがあり、それぞれのAppDomainsが独自のWCF名前付きパイプサービスを設定して中央アプリケーションと通信します。appdomainの間に別々の作業ディレクトリがあります

しかし、AppDomainごとに異なる作業ディレクトリを設定して、相対パスのベースフォルダが各アプリケーションドメインで異なるようにしたいとします。したがって、これらのプラグインは、 "./MyCustomFolder"に行くことによって、通常のファイル処理方法すべてで独自のフォルダ構造を作成できます。

残念ながら私はDirectory.SetWorkingDirectory()がプロセス全体(1つのアプリケーションドメインに分離されていない)に設定されていることを発見しました。これは、いくつかのプラグインが他のプラグインディレクトリに書き込む原因になります。

さまざまなAppDomainsの作業ディレクトリを変更することはできますか、後で行うために新しいプロセスを開始する必要はありますか?親/子プロセスを効果的に安定して管理しようとしているあなたの意見は何ですか?

答えて

0

CurrentDirectory(またはWorkingDirectory)はプロセスごとです。

ただし、appdomainの作成時にアセンブリのプロービングパスを設定できます。 AppDomainSetupクラスを見てください。

+0

相対ディレクトリから読み込まれているアセンブリだけでなく、一般的なリソース(画像、txt、csvなど) – Alex

+0

@Alex:私は答えを書いた後、それを疑った。私が何を提案できるか分からない。どのように物事が読み込まれるのかは非常に異なります。 – leppie

+0

プラグインは起動時に作成されますが、操作中はリソースにアクセスします。彼らは長期稼動のサービス上に存在しているため、プロセスとして作成する際のオーバーヘッドはあまりなく、致命的なエラーなどで追加プロセスを管理する際の問題になります。 – Alex

関連する問題