3

一部の開発者が64ビットマシンと32ビットマシンで作業しているが、チームの半分がx86、残りの半分がx64である必要があるアンマネージアセンブリを参照する必要がある場合はどうすればよいですか?64ビットリグの誰かが最新になるたびに参照を手動で更新する以外に解決策はありますか?

4

3 に答える 3

1

ビルドの一部としてこれを行いたいと思いませんか?

参照される DLL をソース ツリーの永続的な位置からローカル プロジェクトにコピーするビルド前の手順を記述します。$(ConfigurationName) または $(PlatformName) マクロを使用して、アンマネージ DLL のどのバージョンを実際にコピーするかを選択します。構成名またはプラットフォーム名と一致する名前の個別のフォルダーに DLL を保存するだけです。

于 2009-03-06T01:53:12.103 に答える
1

x64 マシンの開発者が喜んで 64 ビット バージョンを実行するのは、かなり奇妙です。Visual Studio は、x64 モードで Edit+Continue をサポートしていません。これはかなりの損失です。その回避策は簡単で、プラットフォーム ターゲットを x86 に設定します。アンマネージ DLL の問題も自動的に解決します。

于 2009-03-06T13:37:10.070 に答える
0

コードを少し編集する別の解決策があります。この質問に対するMilan Gardianの回答に記載されています。

基本的には、アセンブリの両方のバージョン (32 ビットと 64 ビット) にアクセスできる場合に、実行時にどのアセンブリを読み込むかを決定する独自のアセンブリ参照ハンドラーを作成する必要があります。私はこのソリューションを自分で実装したばかりで、魅力的に機能します。

私の状況は次のとおり
です。Windows 7 64ビットで「任意のCPU」を対象とした.NETプログラムを開発しています。32 ビット アセンブリ参照を追加し、Copy Local を false に設定しました。ビルド後のイベントを使用して、32 ビット アセンブリと 64 ビット アセンブリを出力フォルダーにコピーし、32 ビット アセンブリには参照とは異なる名前を付けます。これは、.NET の既定のアセンブリ リゾルバーが参照を解決できないため、カスタム アセンブリ リゾルバーを強制的に起動して実行させたいためです。実行時に正しいアセンブリがロードされ、コンパイル時にエラーは発生しません。これが現在 32 ビット OS で動作していることを実際に確認する時間はありませんでしたが、動作しない理由はわかりません。

于 2009-09-18T20:31:32.287 に答える