windows - Microsoft nanoserver 未运行 exe 文件

标签 windows nano-server

我有一个 nanoserver 容器正在运行。我使用

登录容器
> docker run -it microsoft/nanoserver powershell

在内部,我使用以下命令创建了一个简单的 hello world exe:

PS C:\> Add-Type -outputtype consoleapplication -outputassembly helloworld.exe 'public class helloworld{public static void Main(){System.Console.WriteLine("hello world");}}'

当我运行 helloworld.exe 时,stdout 上没有输出。不会生成错误日志文件。我该如何调试?为什么 helloworld.exe 不在标准输出上抛出输出或错误?我该如何调试?

PS C:\> ls

    Directory: C:\

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
d-----        8/24/2017  11:08 AM                Program Files
d-----        7/16/2016   5:39 PM                Program Files (x86)
d-r---         8/8/2017   3:11 AM                Users
d-----        8/24/2017  11:08 AM                Windows
-a----        8/24/2017  11:09 AM           2048 helloworld.exe
-a----       11/20/2016   5:02 PM           1894 License.txt


PS C:\> .\helloworld.exe
PS C:\> echo %ERRORLEVEL%
%ERRORLEVEL%

最佳答案

没有生成控制台输出的原因是因为您的可执行文件是 x86 而不是 x64。根据此链接,Nanoserver 仅支持 x64: https://www.ca.com/en/blog-developers/docker-containers-os-base-image.html

当我使用 cl.exe 复制一个基于命令行构建的简单 hello world 可执行文件时,我遇到了类似的问题。在使用 dumpbin 检查 exe 是 32 位还是 64 位后,我从正确的 MS VS 开发人员提示重建了可执行文件,即具有 native x64 工具集和设置的那个。这次,我可以在 docker nanoserver 容器中看到应用程序的控制台输出。

关于windows - Microsoft nanoserver 未运行 exe 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45853901/

相关文章:

windows - 配置 Node npm package.json 以便 "npm test"在 unix 和 windows 上都可以工作

windows - inetinfo.exe 始终出现在任务管理器中

windows - 如何在 docker 上运行任何 exe 应用程序

docker - NanoServer或Windows Server Core上的Ucma 4.0/5.0?

powershell - 使用Docker在Nano Server中进行Powershell静默安装

windows - 使用 Chromium Portable 时 Google API key 丢失警告消息

Windows 8.1 Professional Hyper-V 无法启动

linux - 如何在 linux 服务器上安排 .sh 脚本?

docker - Docker Windows Nanoserver 容器中的 Visual Studio 2017 远程调试器无法启动