2010-12-01 17 views
7

私はWindows Formsアプリケーションを持っており、そのアプリケーションをClickOnceデプロイメントでデプロイしています。さて、私はサードパーティのDLLファイルを持っていて、32ビットと64ビットOSのバージョンが異なります。ClickOnceデプロイメントでターゲットマシン(32ビットまたは64ビット)を識別する

ClickOnceによってターゲットマシン(32ビットまたは64ビット)に基づいて異なるDLLファイルを展開することはできますか?

+0

2つの異なるdllバージョンが同じファイル名を持っていますか? – codeConcussion

+0

@whatknott:はい、両方のDLLはバージョン番号でも同じ名前を持っています。違いはサイズだけです。 – JPReddy

答えて

3

[編集]

これは、リフレクションを使用する必要はありません。プログラムへの参照を直接ローダーに追加して、それを蹴ることができます。コードについては、Tech and Meに投稿しました。


両方のバージョンをデプロイメントに含めることができますが、異なる名前を付けてもかまいません。次に、32ビットまたは64ビットシステムでローダーアプリのチェックを行い、実際のプログラムがリンクされている正しいdll(例えばthirdparty64.dll - > thirdparty.dll)をコピーして、ローダーからプログラムを呼び出します Assembly.Loadを使用し、リフレクションを使用してメインメソッドを開始します。

もっと簡単な方法は、アプリケーションをx86として実行するようにコンパイルし、常に32ビットモードで実行することです。 32/64bitバージョンのマシンにインストールされている特定のアプリケーションに依存していないのであれば、これが最善の選択かもしれません。

+0

あなたの答えをありがとう。 Clickonceでこれは可能ですか?このローダーアプリケーションは、clickonceがアプリケーションをデプロイしている間に実行されるのでしょうか、それとも私のアプリケーションで最初に実行する必要がありますか? Clickonceのデプロイメント中に私はこのDLLをどのようにコピーするのか分かりませんが、私にインストール場所が与えられているかどうかはわかりません。私が間違っているなら、私を修正してください。 – JPReddy

+0

デプロイ時ではなく、初めてアプリケーションを実行すると、その操作が必要になります。私もそれを自分自身で試してみます。 –

+0

小さなテストプロジェクトとこれに関するブログ投稿を行いました。それを反映するために私の答えを編集しました。 –

関連する問題