1

プラットフォームにとらわれない .NET アプリケーションは、オペレーティング システムのビット数に合わせて "浮き上がる" ことを知っています。しかし、実行可能ファイルではなくライブラリである .NET アセンブリが、.NET 以外のアプリケーションから呼び出される場合はどうでしょうか。

SQL Server 2005 用の CLR 拡張ストアド プロシージャである .NET DLL があります。現在、これはプラットフォームに依存しません。拡張ストアド プロシージャが、64 ビット Windows で実行されている 32 ビット SQL Server インスタンスから呼び出されるとどうなりますか?

4

1 に答える 1

1

アセンブリがコンパイルされたターゲットによって異なります。プロジェクトのビルド オプションで「Any CPU」または「x86」を選択した場合、DLL は 32 ビット インスタンスとして実行されます。「x64」を選択すると、例外がスローされます (メモリからの BadImageFormatException)。

Windows の 32 ビット プロセスでは 64 ビット DLL をロードできないため、SQL Server はそのプロセス内で .net ランタイムの 32 ビット バージョンを実行します。したがって、.net アセンブリは、64 ビット マシンでも 32 ビットとして実行されます。

于 2009-02-16T05:03:44.507 に答える