我有一个 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/