4

私のプロジェクトでは、32ビットと64ビットの両方の構成を使用しています(32ビットマシンで開発しているが、64ビットマシンにデプロイしているため)。

私のプロジェクトには、「C:... \ Commons \ bin \ Debug\Commons.dll」にあるクラスライブラリが含まれています。このdllをReferencesに追加しましたが、もちろん64ビットに切り替えた場合は機能しません。

したがって、「プラットフォーム固有の参照」を追加するメカニズムが必要です。

.csprojファイルを手動で編集して次のようなものを追加できることを知っています。

<Reference Include="Commons" Condition="$(Platform) == 'x64'">
  <HintPath>..\Commons\bin\x64\Release\Commons.dll</HintPath>
</Reference>
<Reference Include="Commons" Condition="$(Platform) == 'x86'">
  <HintPath>..\Commons\bin\x86\Release\Commons.dll</HintPath>
</Reference>

クラスライブラリについても同じことをする必要がありますか?

VSはクラスライブラリに対しても「プラットフォーム依存の参照」のメカニズムをサポートしていないのだろうか?

upd実際には4種類のdllをリンクする必要があるようです-x86/Debug、x86 / Release、x64 / Debug、x64 / Release

4

2 に答える 2

1

実際、あなたはすべきではありません。コードをMSILにコンパイルし、MSILバージョンのdllへの参照を追加する必要があります。コードと参照コードは、実行時に実行時にコンパイルされます。x86コンピューターで動作する場合は、x86にコンパイルされ、x64コンピューターではx64にコンパイルされます。あなたはそれについて心配する必要はありません。

JITが遅く、パフォーマンスが必要な場合は、ターゲットコンピューターでアセンブリをNGenできます。

于 2012-08-16T18:54:30.257 に答える
0

次の質問には、問題の解決策があります。お役に立てれば。
Visual Studio でのビルド時に条件付きで 32/64 ビット参照を使用する

于 2018-04-12T07:16:56.330 に答える