32

过去几个小时我一直在网上搜索,找到了很多与我的问题相关的信息 - 但没有一个真正解决它们。

我的机器是 64 位的,安装了 32 位的 Visual Studio 10。解决方案使用 .Net 4。解决方案包括 Crystal Reports 的 64 位安装。解决方案还包括 log4net。

在 VS2010 中编译项目对于 Debug 和 Release,任何 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,没有任何更改。

有人可以指导我正确的方式吗?

编辑 - 添加了显示我无法为安装项目选择平台的屏幕截图。

在此处输入图像描述

4

9 回答 9

67

您必须将安装项目标记为 64 位安装程序。在“属性”窗口中设置项目的TargetPlatform属性,将其从 x86(默认)更改为 x64。
还要确保您部署了 64 位版本的 log4net,并且您的 C# 项目的TargetPlatform设置是任何 CPU。
并确保您确实需要您的应用程序作为 64 位进程运行,这种情况很少见。

于 2011-08-05T13:17:44.143 回答
23
  1. 在记事本中打开 Deployment.vdproj。
  2. 查找字符串 "TargetPlatform" = "3:0"
  3. 对于 AMD64 更改为“TargetPlatform”=“3:1”,或者对于 Itanium 更改为“TargetPlatform”=“3:2”。
  4. 保存 Deployment.vdproj。在 Visual Studio 中,您看不到任何更改,但您的项目现在是 AMD64。
于 2012-01-18T19:17:18.370 回答
7
  1. 打开一个部署项目。
  2. 在解决方案资源管理器中,选择部署项目。
  3. 在“属性”窗口中,选择 TargetPlatform 属性。
  4. 为 Intel Itanium 64 位平台选择 Itanium,或为任何其他 64 位平台(例如 AMD64 和 EM64T 指令集)选择 x64。
  5. 在安装时,如果目标计算机与指定平台不兼容,则会引发错误并停止安装。
于 2011-12-21T10:59:46.820 回答
7
  1. 转到 Visual Studio“查看”菜单并单击属性窗口:

在此处输入图像描述

  1. 选择目标框架 x64 位:

在此处输入图像描述

于 2018-02-03T19:40:10.460 回答
3

这是因为TragetPlatform

选择安装项目 > 属性并将 TragetPlatform 更改为 x64。

在此处输入图像描述

于 2020-10-31T06:56:38.957 回答
1
  1. 打开一个部署项目。
  2. 在解决方案资源管理器中,选择部署项目。
  3. 在“属性”窗口中,选择 TargetPlatform 属性。
  4. 为 Intel Itanium 64 位平台选择 Itanium,或为任何其他 64 位平台(例如 AMD64 和 EM64T 指令集)选择 x64。

在安装时,如果目标计算机与指定平台不兼容,则会引发错误并停止安装。

于 2017-02-02T14:23:30.153 回答
0

您可能需要安装需要与 x86 应用程序通信的 x64 Windows 服务(想想 powershell)。您的回答(属性/TargetPlatform)让我克服了这个障碍。

于 2013-04-02T14:58:28.740 回答
0

这适用于 Visual Studio 2010

转到您的项目 > 右键单击​​并选择Properties.

在编译下,转到Advanced Compile Options

找到Target CPU,然后要么

选择x86for 32bit systems, x64for64bit systemsAny CPU

于 2018-05-03T07:30:59.463 回答
0

我的 .net 2010 项目都包括一个 x86 和一个 x64 安装项目。我的项目的 TargetPlatform 是 Any CPU,每个设置项目都有正确的 - CPU 特定的 - TargetPlatform。所有这些都是我开始开发时“克隆”(复制然后使用 NOTEPAD 编辑几个文件)到一个新项目中的“基线”.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

将项目属性 >> 编译 >> 高级更改为任何 CPU 以外的其他内容,然后再返回似乎已经变成了窍门........

于 2018-05-31T15:25:27.243 回答