25

私のプロジェクト(ある種の処理エンジン)は 2 つの dll に分かれています。1 つはインターフェイス宣言を含み、もう 1 つは機能を含みます。通常、プロジェクトは COM テクノロジーを介して外部の Delphi プロジェクトによって使用されます。

私のプログラムが果物をスライスするとしましょう。外部の Delphi プログラムは Fruit オブジェクトを作成し、そのプロパティを入力します: weight (int)、Name (string)、ProgressUpdater (2 番目の dll でインターフェイスを使用して宣言されている IProgressUpdater 型)。この exst programm creater Slicer の後、Slicer.AddFruit(newFruit)そして、Slicer.Slice() を呼び出します。

特にない。実際の Delphi プロジェクトは Outlook アドインです。しかし、ここに問題があります - 一部の VSTO アドインは、Outlook を「シャドウ コピー ファイル」モードで動作させることがあるため、Delphi プロジェクトが開始され、Slicer オブジェクトが作成されると、C# アセンブリが一時フォルダーに配置され、アセンブリがこのローカル パスで作成されます。うーん...これはまだ問題ではありません。しかし、問題は、デルファイ プロジェクトが newFruit を作成してから ProgressUpdater オブジェクトを渡すときです。私のスライサー アセンブリでは、外部の ProgressUpdater を取得できません。

これは、shadowCopyFiles モードがオンの場合にのみ発生します。私の推測では、外部の ProgressUpdater のアセンブリと Slicer のアセンブリが別の場所に配置されているため、渡すことができません。私の質問は、dll が「シャドウ コピー」されないようにする方法です。それとも別の解決策がありますか?

4

2 に答える 2