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

inno-setup - 使用 Inno Setup 对 32 位和 64 位的 AnyCPU DLL 使用 regasm

我有一个使用设置Any CPU编译的 C# COM DLL 。

目前我已将其放入脚本中:

由于只有一个文件(但我的安装程序以 32 位和 64 位安装我的应用程序),我是否在这里做了正确的事情?

0 投票
1 回答
804 浏览

visual-studio - MSBuild:避免重复构建任何 CPU 项目引用

我们有一个包含大约 150 个项目的视觉工作室解决方案。其中 5 个是可执行文件,另外 95 个是可执行文件引用的库或测试项目等。

我们的自动化 CI 通过 MSBuild 为 x86 和 x64 构建解决方案。但是,由于库总是构建 Any CPU,因此应该可以构建完整的解决方案 Any CPU,然后为每个平台再次构建可执行文件。

在 Visual Studio 中,我在配置管理器中有 3 个解决方案平台,x86/x64 平台仅构建 5 个可执行文件。在 VS 中,如果我先构建 Any CPU,然后我可以构建其他平台。

但是,我无法让这个构建从 msbuild 工作。构建 Any CPU 后,我构建了 x86,它无法解析项目引用。也就是说,/reference:库二进制文件的参数没有传递到 csc.exe,因此 csc 失败,因为它找不到二进制文件所依赖的任何类型。

如何让它与 MSBuild 一起使用?Visual Studio 如何知道在 bin\Any CPU 中查找,但 MSBuild 不知道?

0 投票
0 回答
164 浏览

.net - 此 64 位进程未能加载库 R.dll。本机错误消息是“操作成功完成”

我有一个基于 .net 框架 4.7.2 构建的 .net 程序,它调用 rdotnet DLL(基于 .net 标准 2.0 构建)来运行 R 脚本,程序和 DLL 都是为“任何CPU 平台,当我将它部署到 64 位 windows 10 机器并执行程序时,它一直在说以下内容:

但是,当我在调试模式下运行程序时,我没有收到此消息。我的问题是我上面的设置是正确的还是应该在不同的框架/平台组合中编译它们?

0 投票
1 回答
467 浏览

c# - Sentinel HASP 为 64 位 DLL 返回 NoApiDylib

由于我的解决方案应该可以为 AnyCPU 构建,因此我必须在运行时选择正确的 Hasp DLL。这对代理模式非常有效。当我使用 32 位 hasp_net_windows.dll 时,一切正常,我能够成功登录到加密狗。

但是在使用 x64 DLL 时 hasp.Login(...) 返回 NoApiDylib。似乎这是关于 HASP DLL 或与 USB 加密狗的通信的问题。但我无法缩小范围。

你有什么想法吗?提前致谢!

0 投票
0 回答
48 浏览

.net - 仅 64 位进程中的 .NET Windows API 调用问题

背景:我正在将一些旧的 VB.NET 代码从 x86 移植到 AnyCPU 平台。

问题陈述:在一个类实例中,我注意到对kernel32 CreatePipe 函数的调用会意外地改变,当作为 64 位进程运行时,一个完全不相关的布尔类变量的值从TruetoFalse。没有抛出异常,也没有其他任何东西,只是发生调用时我在手表中看到的值变化CreatePipe

我为解决此问题所做的工作:基于 pinvoke 网站 ( https://www.pinvoke.net/default.aspx/kernel32.createpipe ),然后根据下面的评论之一,我将CreatePipe我班级中的签名从:

至:

它现在可以工作了,我的意思是,布尔值不再意外更改,其余代码按预期运行。

问题:不过,我对此并不十分满意,直到我知道是什么导致了 64 位进程中的这种行为。错误的内存访问导致标志值改变?为什么特别是这个变量?是否由于变量的长度指定不正确,可能导致调用覆盖接下来的几个字节数据(这可能是布尔变量所在的位置)?虽然这只是猜测...

更一般地说,当对 Windows API 进行一次或多次调用时,是否有任何指导方针将 .NET 代码从 x86 平台移植到 AnyCPU?

0 投票
2 回答
32 浏览

.net - 在 WinForms 项目中包含仅 64 位程序集

我们有一个大型 WinForms 应用程序,我们不会很快重写(例如在 WPF 中)。Microsoft 继续积极支持 Winforms。

我们通常将 Winforms 构建配置设置为 AnyCPU 用于开发,而部署它的 MSBuild 进程将其构建为 64 位。开发配置设置为 AnyCPU,因为众所周知的问题是,如果应用程序构建为 64 位,则 Winforms 的可视化设计器将无法工作。来回切换做 UX 设计并不会太痛苦。但是,我们现在遇到了一个问题,我们希望在我们的 WinForms 应用程序中包含 Microsoft.CognitiveServices.Speech 的 NuGet 包。此程序集需要 64 位,如果应用程序设置为 AnyCPU,您将收到编译器错误。这消除了我们切换到 AnyCPU 进行 UX 设计的能力。

我们可以做的一种解决方法是,我们有一个旧版本的 Microsoft.CogitiveServices.Speech,它确实允许 AnyCPU,但该版本不再通过 NuGet 提供,因此我们必须将包检查到源代码控制中(糟糕)。

我可以做些什么来让 WinForms 应用程序保持设置为 AnyCPU,但引用一个显然只需要 64 位的程序集?

0 投票
1 回答
3067 浏览

c# - .NET Core 3.1 控制台应用程序无法在 Windows 7 上运行

我使用带有最新补丁的 Visual Studio 2019 创建了一个 .NET Core 3.1AnyCpu控制台应用程序。它包含的唯一代码Console.WriteLine("Hello World!")是创建它的样板。我编译了它,它在我的 Windows 10 x64 机器上运行良好。

我将Debug文件夹复制到我的 32 位 Windows 7 机器上并尝试运行控制台应用程序。我收到以下消息。(.Net Core 3.1 运行时安装在 Windows 7 机器上)。

此文件的版本与您运行的 Windows 版本不兼容。检查您计算机的系统信息以查看您是否需要 x86(32 位)或 x64(64 位)版本的程序,然后联系软件发行商。

但是,如果我使用 x86 编译控制台应用程序,那么它在 Windows 7 机器上运行良好。随着 VS2019 和 .NET Core 3/3.1 的AnyCpu变化?我本来希望编译的代码AnyCpu在 32 位和 64 位下应该可以正常工作。

0 投票
0 回答
230 浏览

.net-core - 如何将 net core 项目发布到 AnyCPU?

我使用这个命令

尝试发布一个项目,而我想发布一个任何 cpu 项目,

说找不到RID。

有没有办法为.net core(.net 5)发布任何 cpu 项目?

0 投票
1 回答
115 浏览

azure-devops - 您如何构建具有混合平台的 azure devops 管道

我在工作中继承了一个新的 C# 项目,我一直在阅读源代码并为它构建 Azure Dev-ops 管道

它有大约多个后台线程和一个服务

我对 Dev-ops Pipelines 还是有点陌生​​,但我不是一个白痴

简直就是个白痴

有一个名为 [name of service]service.cs 的模块

它构建在 x86 构建平台上,其余构建在任何 CPU 上

(我还没有编写任何代码,除了错误修复以使其运行

我将配置应用程序设置从一个模块复制到第二个模块,以便

配置管理器会看到它

我添加了一个布尔值

而已)

我的逻辑基于问题所在;是它在我的机器上构建得很好,而不是在 Dev-ops 上

到这里的这一点信息 我的构建配置的图像

Azure 开发操作错误

并注意我不能将它切换到任何 cpu 并且它不会构建到 86

只是为了确认

该页面不仅有一个包含引用的 using 语句。

中断它的行调用包含命名空间的新语句,因此即使 using 不存在,它也应该没问题

对我来说,这意味着 Dev-ops 环境没有构建 [name of service]service.cs 项目

是 x86 构建模块在管道中引发错误

我主要是自学成才,并且一直在阅读有关此模块的背景信息

我相信这与该模块的代码库有关,该模块有多个 Intptr 和对非托管代码的引用

我必须阅读非托管代码与托管代码是什么,我想我理解

据我所知,这种差异更符合我的逻辑

所有这些要问

我怎样才能像我的机器一样天蓝色地构建这个

在我看来,我的管道的上下文也会添加到这个对话中,所以为了这个目的

整体构建管道 构建配置 变量

0 投票
0 回答
36 浏览

cefsharp - CefSharp AnyCPU 支持(选项 4)

我有一个使用 CefSharp 库的 VB.NET 项目 (WinForms),我想根据此处提到的指南使用选项 4 应用 AnyCPU 支持。

根据要求,

  • 我没有在项目文件中包含“CefSharpAnyCpuSupport”。
  • 我的应用程序有一个“app.config”
  • 我的 Visual Studio (2013) 副本安装了“Web 开发人员工具”。
  • 我的 CefSharp 版本大于所需的 v87.1.132

据记载,基于上述内容,“bin”文件夹中生成的“app.config”将包括以下部分,但在我的情况下,我什么也没得到。

有没有人尝试过实施这个特定的选项?我错过了什么?为了触发生成过程,我在项目文件中添加了以下行,但没有任何积极的结果。

欢迎任何建议。谢谢!