従来のcomコンポーネントを登録する必要がないように、reg-free comを使用します。しかし、私はクライアントのexeのディレクトリの下にない場所にcomのdllを置くことができるようにしたいと思います。 .... \ lib。相対パスまたは絶対パスを許可しないため、サーバーマニフェストファイルでこれを行うことはできません。Reg-free COM - クライアントとの相対的なCOM DLLの場所exe
これは方法がある場合は誰も知っていますか?
UPDATE: は、私はXP上で動作するように相対パスを発見しました。しかし、アクティベーションコンテキストAPIを使用してWindows Server 2008上で絶対パスを使用することができます。今私の問題は、私のCOMコンポーネントは、管理されたデータベースドライバに静的な依存関係を持っているが、現在それを見つけることができないということです。私がマニフェストファイルについて読んだところでは、COM dllと同じディレクトリにあるので、このdllを指すCOMのreg-freeマニフェストに別の要素を追加するだけでよいのですが、うまく動作することはできません。要するに、Activation Context APIを使用して、別のディレクトリ(exeディレクトリのサブディレクトリではない)のCOMマニフェスト/ dllを参照して正しく検出してロードするあるディレクトリにexeがあります。しかし、私はまた、COM dllと同じディレクトリに管理されたデータベースドライバdllを持っています。可能であれば、マニフェストファイルを使用してこれをどのようにロードできるのかを知りたいと思います。
これに追加するだけで、アクティベーションコンテキストAPIも使用してみました。上で説明したように、クライアントには、client.exeと同じディレクトリにないCOM dllをロードします。私は、マニフェストファイルとCOM dllを含むディレクトリを指すようにアクティベーションコンテキストのアセンブリディレクトリを設定することで、これを実行しようとしました。その結果、マニフェストファイルは正しく検出されますが、付属のdllをロードしようとすると、マニフェストを見つけたディレクトリではなく、client.exeを基準にしたパスになります。何か不足していますか? – HammerIp
相対パスは機能します。つまり、dllを '。\ External'フォルダに置くことができます。マニフェストで ''を使ってください。 –
wqw
私はそれが相対的だと思いますが、同じまたはより低いディレクトリレベルでのみ動作します。 – Jeff