我有一个纳米服务器容器正在运行。我使用
登录容器> 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%
答案 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容器中看到该应用程序的控制台输出。