繁体   English   中英

如何在VS12下编译与Win Server 2003兼容的C#(xxxx.exe不是有效的win32应用程序)

[英]How do I compile C# compatible with win server 2003 under VS12 (xxxx.exe is not a valid win32 application)

我在VS12 / WIN7中有一个C#项目,但是当我尝试在Windows Server 2003下运行它时,它抛出一个错误,它不是有效的WIN32应用程序。 我尝试了许多配置,还从Configuration Manager更改为Any Cpu,但无法正常工作。 这个项目有一些套接字和线程代码...我该如何修复?

如果OP中没有提到位问题,则必须检查以哪个.NET版本为目标项目,并尝试在Windows Server 2003上安装适当的版本。或者(如果可能)以.NET版本为目标。在Windows Server 2003计算机上可用。

从对Ben答案的评论来看,您的目标是.net 4.5。 这是你的问题。 问题是Windows Server 2003不支持 .net 4.5。

由于需要定位到Server 2003,因此需要定位支持该OS的.net版本。 支持Server 2003的.net最高版本是.net 4

因此,您应该将Visual Studio中的项目设置更改为目标.net4。此MSDN文章介绍了如何在Visual Studio中执行此操作 总之,您可以打开projet属性,导航到“应用程序”页面,然后设置目标框架下拉菜单。

尝试使用editbin更改所需的最低操作系统版本。 这样可以解决无法识别的图像问题; 但您稍后可能会遇到其他问题。

例如:

EDITBIN myapp.exe /SUBSYSTEM:WINDOWS,5.01 /OSVERSION:5.1

注意:这不能解决根本原因,因此不应将其视为最终解决方案。 但是,这是确定故障是否由可执行标头中的“最低要求的操作系统”字段引起的最佳方法。 同样,通过继续检查该过程的实际启动代码,它可能会发现可执行文件被标记为需要特定Windows版本的原因。


实际上,对于任何工具链而言,使用“最低要求的操作系统”字段都是一个坏主意,因为该字段的实际含义是“显示有关无效图像的消息”。 而且,直到XP以及包括XP在内的Windows版本的已部署副本的数量,都使得无法恢复预期的含义(用更好的错误消息修补所有版本都是不可行的)。

在应用程序启动期间进行版本检查和有意义的错误消息要好得多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM