c# - .NET 4.0 到 4.5 迁移并在 4.0 机器上运行异常

标签 c# .net migration

我有一个基于 Windows Server 2012 和 .NET 4.5 构建的 C# 应用程序。现在作为另一个过程的一部分,另一台机器需要运行这个应用程序。 它可能正在使用 Process.Start 来执行我的 .exe 文件。我不能说 100%,因为我无权访问代码。使用 .NET 4.0 时一切正常,但现在当我迁移到 .NET 4.5 时,它抛出异常:

The specified executable is not a valid application for this OS platform

我假设问题是这台机器上没有安装 .NET 4.5,所以我从配置文件中删除了这一行以支持在 .NET 4.0 上运行。

<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1"/></startup>

它仍然没有帮助,并且抛出相同的异常。 我的应用程序引用了另一个使用 4.5.1 框架的库,但这无关紧要。我在某处读到它们被视为 4.0 应用程序(未使用 4.5 功能)。构建服务器也从 Windows Server 2003 更改为 Windows Server 2012,但使用哪个操作系统构建应该无关紧要,不是吗?感谢您的帮助。

最佳答案

The specified executable is not a valid application for this OS platform

您的应用程序应该使用 AnyCPU 平台构建。如果您尝试在 32 位操作系统上运行使用 Debug|x64Release|x64 构建的应用程序,整个可执行文件将无法运行,您将收到该错误。

更新

OP 在一些评论中说:

Issue doesn't seem to be fixed. Does it matter that one of the referenced libraries is forced to use x86 due to C++ references?

然后,您被迫从 32 位进程启动该进程。

关于c# - .NET 4.0 到 4.5 迁移并在 4.0 机器上运行异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33416132/

相关文章:

c# - 使用 linq 将列表转换为字典而不用担心重复

c# - 用于自动化的 User32 API 自定义 PostMessage

c# - 将 double 格式化为纬度/经度人类可读格式

c# - 如何将字节数组转换为字符串数组?

c# - 如何使用 linq 方法语法进行子选择

.net - 在.Net 2.0中将8位灰度tiff图像转换为8位灰度jpg

ruby-on-rails - 即使没有挂起的迁移,Rails 迁移也非常缓慢

javascript - 文件选择器.io : merging accounts or cloning files and urls from one to another

ruby - 运行cmd <rake db:migrate>时出错-“未找到带有'primary'的连接池”

c# - WCF 动态使用多个 web 服务