web-dev-qa-db-ja.com

devenvでvdprojをコンパイルできません-'targeting' x64 'はプロジェクトのターゲットプラットフォーム' x86 'と互換性がありません

私は過去数時間Webを検索してきましたが、私の問題に関連する多くの情報が見つかりましたが、実際にそれらを修正するものはありませんでした。

私のマシンは64ビットで、32ビットのVisual Studio 10がインストールされています。ソリューションは.Net 4を使用します。ソリューションには、Crystal Reportsの64ビットインストールが含まれます。ソリューションには、log4netも含まれます。

VS2010でのプロジェクトのコンパイルは、デバッグとリリースのどちらのCPUでも問題ありません。

構築したいWebセットアッププロジェクトを追加しました。ただし、構成に関係なく、コンパイル時に次のエラーが発生します(VS UIおよびdevenv.exeを使用したコマンドラインの両方で)。

ERROR: File 'CrystalDecisions.ReportAppServer.Prompting.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.Prompting.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.ObjectFactory.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.ObjectFactory.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.XmlSerialize.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.XmlSerialize.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.CommonObjectModel.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.CommonObjectModel.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.CommonControls.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.CommonControls.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.ReportDefModel.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.ReportDefModel.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'log4net.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'log4net.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.Controllers.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.Controllers.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.DataDefModel.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.DataDefModel.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.CubeDefModel.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.CubeDefModel.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.ClientDoc.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.ClientDoc.dll' targeting 'x64' is not compatible with the project's target platform 'x86'
ERROR: File 'CrystalDecisions.ReportAppServer.CommLayer.dll' targeting 'AMD64' is not compatible with the project's target platform 'x86'
WARNING: File 'CrystalDecisions.ReportAppServer.CommLayer.dll' targeting 'x64' is not compatible with the project's target platform 'x86'

プロジェクトの構成を変更せずに明示的にx86とx64の両方に設定しようとしました。

誰かが私を正しい方法で案内できますか?

編集-セットアッププロジェクトのプラットフォームを選択できないことを示すスクリーンショットを追加しました。

enter image description here

28
sonstabo

セットアッププロジェクトを64ビットインストーラーとしてマークする必要があります。 [プロパティ]ウィンドウのセットアッププロジェクトのTargetPlatformプロパティをx86(デフォルト)からx64に変更します。
64ビットバージョンのlog4netをデプロイし、C#プロジェクトのTargetPlatform設定がAny CPUであることも確認してください。
そして、実際にneedアプリを64ビットプロセスとして実行することを確認してください。これはまれです。

55
Hans Passant
  1. メモ帳でDeployment.vdprojを開きます。
  2. 文字列 "TargetPlatform" = "3:0"を検索します
  3. AMD64の場合は "TargetPlatform" = "3:1"、Itaniumの場合は "TargetPlatform" = "3:2"に変更します。
  4. Deployment.vdprojを保存します。 Visual Studioでは変更は表示されませんが、プロジェクトはAMD64になります。
18
Jan Maslov
  1. 配置プロジェクトを開きます。
  2. ソリューションエクスプローラーで、展開プロジェクトを選択します。
  3. [プロパティ]ウィンドウで、TargetPlatformプロパティを選択します。
  4. Intel Itanium 64ビットプラットフォームの場合はItanium、その他の64ビットプラットフォーム(AMD64やEM64T命令セットなど)の場合はx64を選択します。
  5. ターゲットコンピューターが指定されたプラットフォームと互換性がない場合、インストール時にエラーが発生し、インストールが停止します。
7
MOHAMED SAKR
  1. Visual Studioの[表示]メニューに移動し、[プロパティウィンドウ]をクリックします。

enter image description here

  1. ターゲットフレームワークx64ビットを選択:

enter image description here

  1. 配置プロジェクトを開きます。
  2. ソリューションエクスプローラーで、展開プロジェクトを選択します。
  3. [プロパティ]ウィンドウで、TargetPlatformプロパティを選択します。
  4. Intel Itanium 64ビットプラットフォームの場合はItanium、その他の64ビットプラットフォーム(AMD64やEM64T命令セットなど)の場合はx64を選択します。

ターゲットコンピューターが指定されたプラットフォームと互換性がない場合、インストール時にエラーが発生し、インストールが停止します。

1
Shailendra

X86アプリケーションと通信する必要があるx64 Windowsサービスのインストールが必要な場合があります(powershellと考えてください)。あなたの答え(properties/TargetPlatform)は、そのハードルを乗り越えました。

0
Mike Nahorniak

これはVisual Studio 2010用です

プロジェクトに移動し、右クリックしてPropertiesを選択します。

[コンパイル]でAdvanced Compile Optionsに移動します

Target CPUを見つけてから、

x86の場合は32bit systemsx64の場合は64bit systems、またはAny CPUを選択します

0
Mr.J

私の.net 2010プロジェクトにはすべてx86およびx64セットアッププロジェクトが含まれています。私のプロジェクトのTargetPlatformは任意のCPUであり、各セットアッププロジェクトには正しい-CPU固有-TargetPlatformがあります。これはすべて、開発を開始するときに「ベースライン」の.Netプロジェクトの一部であり、私が「クローン」(ノートパッドを使用していくつかのファイルをコピーして編集)して新しいプロジェクトにします。何年もの間素晴らしい仕事をしてきました。

新しいプロジェクトでこのエラーが発生し、次の操作を行うまで修正が見つかりませんでした。

- Open Project Properties >> Compile >> Advanced and set Target to x86
- "Build" x86 Setup Project
    - Build Success
- Changed Project Properties >> Compile >> Advanced Target to x64
- "Build" x64 Setup Project
    - Build Success
- Changed Project Properties >> Compile >> Advanced Target to Any CPU
- Build x86 Setup Project
    - Build Success
- Build x64 Setup Project
    - Build Success

プロジェクトプロパティの変更>>コンパイル>>アドバンスをAny CPU以外に変更し、再び元に戻すと、トリックがうまくいったようです。

0
jdw3rd