问题标签 [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 投票
1 回答
125 浏览

c# - 需要使用 SQL Server CE 迁移到 ANYCPU

我们的应用程序当前使用 SQL Server CE 3.5 在 X86 模式下运行。我需要切换到 ANYCPU 模式。我尝试升级 SQL Server CE 4.0,因为我听说 SQL Server CE 3.5 不支持 ANYCPU。已将我的项目更改为 ANYCPU,但在尝试打开 SQL Server Compact 文件时出现以下错误。请帮忙。

无法加载与版本 8080 的 ADO.NET 提供程序对应的 SQL Server Compact 的本机组件。安装正确版本的 SQL Server Compact。有关详细信息,请参阅知识库文章 974247。

无法加载 DLL 'sqlceme35.dll':找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)

0 投票
1 回答
434 浏览

c# - 有没有办法在没有 AnyCPU 的情况下构建 VS 单元测试

我为 HTML5+JavaScript 库开发了一个 C# API——我使用 CefSharp 作为中间层。现在我需要创建一些单元测试,以确保 API 可以正常工作。问题是 CefSharp 不能(简单地)与 AnyCPU 一起使用,而 VisualStudio 的单元测试必须为 AnyCPU 构建。当我尝试运行测试时,这会导致错误:CefSharp.Common will work out of the box if you specify platform (x86/x64).

有没有办法超越这些限制中的任何一个?
我知道 CefSharp 会以某种方式与 AnyCPU 兼容,但我无法让它运行。


编辑

现在我没有收到第一个错误,但我有另一个错误:

.

这是 Fusion View 的日志:


相关的 GitHub 问题在这里

如果你到目前为止对我的代码感兴趣: GitHub 链接(不太相关)

0 投票
3 回答
1364 浏览

c# - AnyCPU 与 ODP.NET

我的配置:Vs2015 / X64 PC / ODP.NET X86

我已经在“任何 Cpu”模式下编写了一些 DLL,我想编写使用这些 DLL 并且可以在 X64 和 X86 机器上运行的程序。

但是我在我的 Dll 中引用了“Oracle.DataAccess.dll”,然后在 Oracle DLL 上出现警告“ProcessorArchitecture=X86”。

我该怎么办(如果需要,我可以安装 ODP.NET X64)?

谢谢

0 投票
1 回答
881 浏览

c# - CefSharp NuGet 包,AnyCPU 找不到文件

我目前正在尝试编写一个小型服务,它使用 CefSharp (v57.0.0) 将 HTML 呈现为 PDF 文件,并按照说明在我的项目中使用“任何 CPU”(功能请求 - 添加 AnyCPU 支持)。在我的项目中,我使用了以下似乎工作正常的程序集解析器(它在初始化期间加载 CefSharp.Core.dll、CefSharp.dll):

对于 CefSharp 的初始化,我设置了与示例中完全相同的值:

但是,如果我开始我的简单测试,我会收到以下错误代码:

有什么想法可能在这里发生以及如何解决问题?

0 投票
1 回答
5152 浏览

x86 - 从命令行使用 devenv.exe 并打开解决方案

我已将 VSIX 项目配置为在按 F5 时运行 devenv.exe。这将从 Visual Studio 中打开起始页。为了测试我的扩展,我必须手动打开一个特定的解决方案。

我尝试使用参数“/Run PathToSolution.sln”运行 devenv,这会使用指定的解决方案启动 VS,但也会运行启动项目。有没有办法运行 devenv 并打开一个特定的解决方案?

0 投票
0 回答
369 浏览

asp.net - 使用 ASP.NET Core MVC Web 应用程序在 64 位模式下运行 Kestrel

使用 ASP.NET Core MVC Web 应用程序,有没有办法在 64 位(或 AnyCPU)模式下运行 Kestrel Web 服务器?如果我将应用程序的目标平台从默认的 x86 更改为 x64 或 AnyCPU,它将不再运行,并在尝试启动 Kestrel (Microsoft.AspNetCore.Server.Kestrel) 时产生 System.BadImageFormatException。

ETA:为了进一步调查,我反编译了 Microsoft.AspNetCore.Server.Kestrel。它是为 AnyCPU 构建的,但似乎包含 MSIL 和 libuv 库的本机 x86 代码的混合,该库是用 C 编写的。目前尚不清楚为什么加载它的唯一方法是从为 x86 构建的程序集中,同时具有 AnyCPU 和x64 产生“坏图像”错误。人们期望能够从另一个 AnyCPU 程序集加载一个 AnyCPU 程序集,但事实并非如此。令人费解的是,AnyCPU 程序集会包含一些本机 x86。

0 投票
2 回答
545 浏览

c# - CMake - 构建没有首选 32 位标志的 C#

我有一个从 C++ 创建 DLL 的 CMake 项目和一个加载 DLL 的 C# Windows Forms 可执行文件。

我使用 CMake 生成器:Visual Studio 15 2017 Win64

无论我做什么(一个例子是设置编译选项/platform:anycpu:),我都无法让 CMake 没有编译标志:/platform:anycpu32bitpreferred

当我在 VS2017 中打开生成的 VS 项目时,它在构建选项中设置了“首选 32 位”标志。

有没有办法强制 CMake 在没有设置此标志的情况下生成我的 C# 项目?除非我使用 32 位 DLL,否则它会导致运行时链接问题。

0 投票
1 回答
2280 浏览

c# - When it's needed to use x86 or x64 target platform?

I've studied the information about building apps with a different target platforms options in visual studio, but I still can't understand the following things:

when do we need to set x86 or x64 target?
what advantages gives us setting a specific target platform (x86 or x64) over setting 'any cpu'?
isn't it easier always to set 'any cpu'?

0 投票
1 回答
710 浏览

c# - 无法通过反射加载特定的 32 位程序集

我正在使用库SharpShell开发一个简单的 shell 扩展(属性表)来显示 .NET 程序集的一些信息,请参阅:

在此处输入图像描述

这个 shell 扩展和SharpShell本身与这个问题无关,而是解释我的场景,以便您更好地理解我的问题。


我的项目被编译为任何 CPU模式,然后,为了在我的程序中管理 x86、x64 和任何 CPU 程序集的加载,我正在使用将Assembly.Load()原始程序集的字节作为唯一参数的函数的重载:

我使用 x86 和 x64 架构的 dll 和可执行文件对其进行了测试,并且任何 CPU 都可以正常工作……除了我将解释的问题。

问题是由于某种原因我忽略了它不适用于某些 x86 程序集,例如当我尝试加载 x86 程序集时:System.Web.dll ( System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a),该Assembly.Load()函数引发异常。它不是 a BadImageException,它FileLoadException带有以下错误消息:

无法加载文件或程序集“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。给定的程序集名称或代码库无效。(来自 HRESULT 的异常:0x80131047)

(请注意,这Assembly.ReflectionOnlyLoad()也会引发相同的异常。)

但是,我可以成功加载同一程序集的 x64 版本。请注意,正如我所说,我可以在我的程序中加载大多数 32 位程序集。

如果我将我的项目编译为 x86,那么我可以成功加载这个程序集。但是我的项目必须编译为任何 CPU(以便能够处理 x86 和 x64 程序集的加载......因为我不知道更好的方法)。

我想知道为什么我不能加载那个特定的程序集,以及解决这个问题的可行方法。

如果你想测试它,你可以在这里下载 dll:

http://www.mediafire.com/file/8h9256w02b2j3dj/System.Web.dll.zip/file

0 投票
0 回答
774 浏览

.net - 有 64 位 SQLite.dll 吗?

我使用 NuGet 提取的应用程序中有 SQLite。它是 1.0.108 版本。这是anyCPU还是32位?有很多帖子讨论 DLL 有点特定。

dumpbin 说它是 32 位 DLL。但是我的应用程序(设置为 anyCPU)在调用 sqlite.dll 的 64 位模式下运行良好。

这不再是一个问题,现在可以从任一模式调用吗?

NuGet:SQLite 开发团队的 System.Data.SQLite.Core 版本:1.0.108 描述:x86 和 x64 的官方 SQLite 数据库引擎以及 ADO.NET 提供程序。

在此处输入图像描述