Microsoft nanoserver没有运行exe文件

时间:2017-08-24 05:53:13

标签: windows nano-server

我有一个纳米服务器容器正在运行。我使用

登录容器
> 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没有在stdout上抛出输出或错误?我该怎么调试呢?

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%

1 个答案:

答案 0 :(得分:0)

之所以没有控制台输出,是因为您的可执行文件是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开发人员提示(即具有本机x64工具集和设置的提示)中重建了可执行文件。这次,我可以在docker nanoserver容器中看到该应用程序的控制台输出。