【问题标题】:Microsoft nanoserver not running exe fileMicrosoft nanoserver 未运行 exe 文件
【发布时间】:2017-08-24 05:53:13
【问题描述】:

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

【问题讨论】:

  • 在powershell中,应该是“echo $LASTEXITCODE”,按照你的例子对我来说会产生(有帮助的)-1073741515。我正在尝试调试类似的东西 - 我假设 nanoserver 中缺少一些依赖项。

标签: windows nano-server


【解决方案1】:

没有生成控制台输出的原因是因为您的可执行文件是 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 容器中看到应用程序的控制台输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多