.NETの「任意のCPU」プロジェクトは、FrameworkまたはFramework64 DLLにバインドする必要がありますか?
質問
System.Data
のFramework64バージョンへの参照を持つC#Visual Studioプロジェクト(.csproj)があります。 MSBuild / Team Foundation Server (TFS)別のマシンでは、64ビットDLLが存在しないため失敗します。
フレームワークバージョンにバインドする必要がありますか、それとも64ビットマシンで実行するときに制限されますか?可能な場合、.NETはバインディングを64ビットを使用するようにリダイレクトしますか?
解決
質問で任意のCPU を意味すると思いますか?その場合、ビットネスを考慮しないバインディングは、ほぼすべての状況で実行する方法です。
.NET コードは JITed (Just In Timeコンパイル済み)-C#または VB.NET コンパイラは、実行するアーキテクチャに関係なく同じです。実行時にコードがJITされると、32ビットまたは64ビットになります。
場合によっては、ターゲットアーキテクチャを気にする必要があります。特定のケースの1つは、 COM -ラッパーDLL、.NET Frameworkの参照または依存関係、またはさもないと。これは、これらのDLLファイルが32ビットとしてマークされていない場合(COMの場合)32ビットのみとしてマークされるため(COMは32ビットのみのアーキテクチャであるため)、COMへの相互運用は機能しません。したがって、それらは明示的にマークされているため、プロジェクトの出力も同様になります。
所属していません StackOverflow