问题标签 [anycpu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
39685 浏览

x86 - 从命令行使用 devenv.exe 并指定平台

我正在尝试使用命令行中的 devenv.exe 编译 Visual Studio 解决方案。我可以让它工作,但解决方案中的所有项目都是为 AnyCPU 编译的,我希望它们为 x86 编译。所有项目的调试和发布配置都设置为 x86。

当我从 IDE 中编译时,它工作正常。但是当我尝试从命令行构建解决方案时,它总是为 AnyCPU 构建所有项目。有没有办法让 devenv.exe 只在 x86 中构建?

我们正在使用 Visual Studio 2012

0 投票
1 回答
494 浏览

c# - 强制使用 AnyCPU 构建的 C# WinForms 应用程序作为 32 位进程进行调试

我有一个使用 AnyCPU 构建的 C# 项目。我们还动态加载当前依赖于 32 位原生 DLL 的功能。关闭此功能后,应用程序作为 64 位应用程序运行得非常愉快。因此,Visual Studio 确定应用程序将在 64 位进程中运行。为了强制应用程序作为 32 位进程运行,我们在主项目上设置了 Post Build 步骤,该步骤使用 CorFlags 将其设置为 32 位。在 Visual Studio 之外运行应用程序时,这可以正常工作。但是,如果我使用 F5 调试应用程序,我会收到一个错误,表明我有 32/64 位不匹配。似乎 Visual Studio 已确定应用程序可以作为 64 位进程运行并相应地设置调试器,但我不知道我已运行 CorFlags 将其强制为 32 位。

有什么方法可以强制 Visual Studio 将应用程序作为 32 位进程进行调试?我想将平台目标保留为 AnyCPU,因为第三方组件最终将升级到 64 位。

0 投票
0 回答
138 浏览

c# - 为什么 Process.Start from my app 会导致 Outlook 崩溃?

我有一个应用程序,它位于系统托盘中并监视某些事件。在发生特定事件时,它会触发带有“mailto”链接的 Process.Start。发生这种情况时,Outlook 新邮件窗口会短暂出现,然后崩溃。

我在 64 位 Windows 7 机器上,应用程序编译为 Any CPU。我将其更改为编译为 x86,Outlook 不再崩溃。

如果 Outlook 从 32 位和 64 位进程启动,有人可以提供有关为什么 Outlook 会崩溃的见解吗?好像应该没关系。

0 投票
0 回答
291 浏览

dll - 为任何 CPU 更改为 x86 发布构建 Windows Phone 8 库

奇怪的配置,我似乎无法理解。

我有一个我想为任何 CPU 构建的 Windows Phone 8 库,当我选择调试时它工作正常,但是一旦我选择发布配置,平台就会更改为 x86。我可以将其更改为任何 CPU、保存和退出选项,但如果再次打开它,它会切换回 Active (x86)。

我想念什么?分发 Windows Phone 库的正确方法?

问候。

0 投票
2 回答
706 浏览

c# - VS2012 如何将 C# 的 AnyCPU 配置的输出目录设置为相应解决方案配置的 x86 和 x64 文件夹?

我有一个包含两个 C++ 和两个 C# 项目的解决方案。对于解决方案,我有一个 Win32 配置,其中有两个 C++ 文件Win32和两个 C# 文件作为AnyCPU. x64 解决方案具有 C++ asx64和 C# as AnyCPU.

对于 Win32 解决方案,C++ 文件构建在/x86/Release/文件夹中,我已将 C# 文件设置为输出到同一文件夹。但是,由于它设置为AnyCPU,x64 解决方案还具有 C# 输出到/x84/Release/文件夹。

我希望 VS2012 中会有某种宏允许我选择解决方案的配置,以便我可以将输出设置为$(SolnConfig)/Release,但似乎没有任何类似的东西。

有什么方法可以(相对)直接将输出设置AnyCPU为相应解决方案的 x86 和 x64 目录?

0 投票
0 回答
542 浏览

wpf - MS Access 2013:试图读取或写入受保护的内存。这通常表明其他内存已损坏

我们在虚拟机上运行 Windows 8 64 位和 MS Office 2013 64 位。当我尝试使用查询字符串中的参数查询访问数据库时出现此错误。堆栈跟踪是:

我有以下代码:

异常发生在这一行: using (OleDbDataReader reader = _command.ExecuteReader()

我们正在使用 Visual Studio 2012 运行 .NET 4,这是一个 WPF 应用程序。

有线的事情是,如果我不将参数传递给 sql 查询,它工作正常。一旦查询有一些参数,就会发生错误。

在 Visual Studio 中,平台设置为我们想要的 AnyCPU。我们不想将其更改为 x86。

谢谢您的帮助。

0 投票
2 回答
4554 浏览

vb.net - 在 64 位系统上以 32 位模式运行 ANYCPU Exe

在 64 位操作系统上运行一个 EXE 女巫是否可以编译为 ANYCPU,但在 32 位模式下?

有没有办法配置启动模式?

谢谢你的任何建议

0 投票
1 回答
2467 浏览

.net - .NET 应用程序加载混合 dll,使用任何 CPU

我是创建 .NET 应用程序的新手,尤其是混合应用程序。

最近,我在(非托管)C++(在 MS Visual Studio 2010 下)为客户端创建了一组(静态)库,支持 32 位和 64 位编译,它们由某些应用程序加载,通常很好. (在内部,此功能使用各种其他第三方库,如 OpenGL、boost、glm 等)

现在,他还希望能够在他的 C# 应用程序中使用我作为自定义控件提供的一些功能。

所以我创建了一个支持 CLR 的 dll,使用 C++/CLI 为我的功能创建包装类,然后创建一个自定义的 WPF 控件,该控件是公共的(因此可以从外部访问),同样可以很好地构建两者32 位和 64 位。

然后为了测试,我创建了一个简单的 C# 应用程序(它真的很简单,因为我是 C# 新手,我的背景是 C/C++),它可以构建在 32 位或 64 位,并且可以成功地从我的 DLL 加载控件并做它应该做的事情。

我现在遇到的问题是,他说他希望能够仅将单个可执行文件分发为“任何 CPU”,然后根据其启动位置加载适当的代码(即 32 位或 64 位)。

所以我所做的就是在 C# 测试项目中添加一个“Any CPU”配置,并将“build”选项卡下的“platform target”设置为“Any CPU”。但现在我不确定在配置管理器下为其他项目设置什么平台(即 C++ 静态库,由 C++/CLI 混合模式 dll 使用)。因此,为了进行测试,我将其保留在 x64,但是当我构建它时,我收到了警告:

然而,它运行良好,即使它给了我这个警告。当我将其他项目设置为“Win32”时,我得到了同样的警告,只是提到了“x86”,但在这种情况下,它会在启动时抛出一个异常,说“PresentationCore.dll 中发生‘System.BadImageFormatException’类型的未处理异常"

那么我需要将其更改为什么?如何让它加载可执行文件,然后决定加载哪个 dll?我真的不确定如何继续并让它按照我要求的方式工作。

0 投票
2 回答
89 浏览

c# - x86 / anycpu - 铸造的区别?

我的代码:

当我使用 x86 编译时-> a 和 b 都 = 2

当我使用 anycpu -> a = 2 和 b = 0编译时

谁能解释为什么?!

编辑:我在 Windows 7 x64 上使用 VS2010、.NET 4.0

在此处输入图像描述

0 投票
1 回答
275 浏览

c# - 编译器警告处理器架构不匹配,而 corflags 则声称并非如此

编译器给出以下警告:

警告 MSB3270:正在构建的项目“MSIL”的处理器架构与参考“NationalInstruments.DAQmx”、“x86”的处理器架构不匹配。

当我从国家仪器检查我使用的 DLL 时,我发现它们中的每一个都是针对任何 cpu 架构构建的。

corflags NationalInstruments.DAQmx.dll

Microsoft (R) .NET Framework CorFlags 转换工具。版本 4.0.30319.1 版权所有 (c) Microsoft Corporation。版权所有。

版本:v4.0.30319 CLR 标头:2.5 ** PE:PE32 ** CorFlags:24 ILONLY:0 ** 32BIT:0 ** 签名:1

据我了解,PE32 + 32BIT 0 == 任何 Cpu。

关于如何解决这个问题的任何建议都会很棒