Windows 7 X64 マシンで "Any CPU" アプリを実行すると、明示的に 32 ビット (x86) モードで実行するように指示しない限り、デフォルトで 64 ビット (x64) CLR (共通言語ランタイム) になります。
.Net SDK で利用可能なコマンドライン ツールを使用してフラグを変更することにより、強制的に 32 ビット ランタイムにロードすることができます。
corflags.exe /32BIT+ myAssembly.exe
これにより、実際には x86 dll に戻ります。ほとんどの場合、xp マシンで動作する理由は、そのマシンで 64 ビット CLR がサポートされていないためです。そのため、「任意の CPU」であっても常に 32 ビット x86 モードで実行されます。
また、「任意の CPU」DLL は、それをロードするホスト アプリケーションのビット数に常にデフォルト設定されることに注意してください。
プロファイラー DLL で 64 ビット (x64) と互換性のない何かを実行しているに違いないと思います。問題は、「うまくいかない」とはどういう意味ですか。「不正な画像形式」のような例外が発生しますか?それとも、別の方法でコンパイルされた別のアセンブリによって DLL が呼び出されますか? 予想外の結果とは?