2

特定のアーキテクチャ用に構築されたネイティブ コンポーネントが付属する AnyCPU として構築される csproj ファイルがいくつかあります。これらのファイルは同じ場所に配置する必要があるため、現在選択されているプラ​​ットフォームと構成に従って出力ディレクトリを設定したいと考えました。

<PropertyGroup>
  <OutputPath>$(SolutionDir)\bin\$(Configuration)_$(Platform)\</OutputPath>
</PropertyGroup>

残念ながら、これは AnyCPU プロジェクト内にあるため、$(SolutionDir)\bin\Release_x64\ の出力ディレクトリを生成する代わりに、$(SolutionDir)\bin\Release_AnyCPU の出力ディレクトリを生成しています。

このライブラリの新しいビット固有のバージョンを作成することは避けたいと思います。ビルドでファイルを適切な場所に配置したいだけです。

csproj は、ビルド全体のプラットフォームが何であるかをどのように知ることができますか?

4

1 に答える 1

3

$(Platform) の値は、マネージド プロジェクトとはまったく関係ありません。プロジェクトのビルド方法や実行方法にはまったく影響しません。ビルド時ではなく、実行時に発生するアーキテクチャを決定するのはジッターです。

効果のある唯一の設定は、プロジェクト + プロパティ、ビルド タブ、プラットフォーム ターゲットです。この設定の値は、$(Platform) によって決定されません。これは、VS2010 以降、非常に多くの混乱を引き起こしました。

プラットフォーム名は重要ではないため、C++ プロジェクトのプラットフォーム名と同じにするだけでよいため、これでソリューションが表示されるはずです。必要に応じて、管理対象プロジェクトに x64 および Win32 構成を追加します。もう必要ないので、AnyCPU 構成を削除します。すべてのプロジェクトが同じプラットフォームを使用していることを確認するために、構成マネージャーを構築しました。問題が解決しました。

于 2013-06-28T00:14:01.487 に答える