.NETの「任意のCPU」プロジェクトは、FrameworkまたはFramework64 DLLにバインドする必要がありますか?

StackOverflow https://stackoverflow.com/questions/319585

質問

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への相互運用は機能しません。したがって、それらは明示的にマークされているため、プロジェクトの出力も同様になります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top