配置WPF客户端以运行64位

10
我们有一些使用Entity Framework与DB2数据库交互的代码。
当我们尝试使用事务范围时,会收到“底层提供程序在打开时失败”的消息。
  • 仅在从WPF客户端运行时才会出现此错误。
  • 从单元测试运行时不会出现此错误。
  • DB2提供程序是64位的。
我们发现的区别是单元测试配置为Any CPU,但WPF项目配置为x86。
问题在于Visual Studio UI不允许我们选择除了x86以外的任何其他选项来配置WPF项目。
这是WPF项目的限制吗?如果不是,我们该如何将WPF项目配置为Any CPU?
5个回答

15
也许你将 Visual Studio C# 的平台与平台目标混淆了?
每个 Visual Studio C# 项目都可以构建为多个平台之一。这使您可以使用同一项目构建到几个硬件平台,如32位和64位Intel / AMD CPU或不同的CPU,例如Itanium。
然而,当您创建一个新项目时,默认情况下只包含一个平台,并且在您的情况下,您也只想构建到一个平台,即x64。对于新项目,Visual Studio 使用的平台如下:
- 库项目(包括测试项目)将具有“Any CPU”平台。 - 可执行项目(包括WPF项目)将具有“x86”平台。
有点令人困惑的是,这些平台只是暗示实际构建内容的名称。您可以在项目设置的“生成”选项卡中控制编译器发出的内容。在此处,您可以将“平台目标”设置为“Any CPU”,“x86”或“x64”等值。

您需要在WPF项目中将平台目标设置为x64

Visual Studio C# project settings

要完全配置您的平台,您需要使用位于菜单“生成”->“配置管理器”中的配置管理器

1

没有这样的限制。您可以在项目属性的构建页面上的“平台目标”组合框中选择目标


1

我唯一无法更改的是平台,说实话我不知道它是什么。但是你可以看到我可以选择x64作为平台目标,你确定你没有这样的选项吗?

enter image description here


1
在最新版本的Visual Studio(至少是2019)中,在项目属性中的生成设置中,有一个选项可以优先选择32位平台目标。

enter image description here

如果您不取消选择,您的应用程序将在 x64 机器上运行为 x32。


要小心,因为你可能会发现(可能是几年后),关闭这个功能会导致一些意想不到的问题,并且破坏了你的应用程序,给某些用户带来了困扰。而且,花了两天时间才找出问题所在。显然,这刚刚发生在我身上。 - Simon_Weaver

0

这个问题的解决方案非常简单。 我们将64位控制台PowerShell.exe复制到当前VisualStudio项目的调试文件夹中,并提供相同的路径(.\debug RR .\debug)来触发PowerShell脚本,它可以正常工作。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接