私は過去数時間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の両方に設定しようとしました。
誰かが私を正しい方法で案内できますか?
編集-セットアッププロジェクトのプラットフォームを選択できないことを示すスクリーンショットを追加しました。
セットアッププロジェクトを64ビットインストーラーとしてマークする必要があります。 [プロパティ]ウィンドウのセットアッププロジェクトのTargetPlatform
プロパティをx86(デフォルト)からx64に変更します。
64ビットバージョンのlog4netをデプロイし、C#プロジェクトのTargetPlatform
設定がAny CPUであることも確認してください。
そして、実際にneedアプリを64ビットプロセスとして実行することを確認してください。これはまれです。
ターゲットコンピューターが指定されたプラットフォームと互換性がない場合、インストール時にエラーが発生し、インストールが停止します。
X86アプリケーションと通信する必要があるx64 Windowsサービスのインストールが必要な場合があります(powershellと考えてください)。あなたの答え(properties/TargetPlatform)は、そのハードルを乗り越えました。
これはVisual Studio 2010用です
プロジェクトに移動し、右クリックしてProperties
を選択します。
[コンパイル]でAdvanced Compile Options
に移動します
Target CPU
を見つけてから、
x86
の場合は32bit systems
、x64
の場合は64bit systems
、またはAny CPU
を選択します
私の.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以外に変更し、再び元に戻すと、トリックがうまくいったようです。