0

我想创建一个 GitHub 操作,在每次推送时编译我的 Business Central Extension。我想创建一个自托管运行器,因此我使用 Visual Studio Code 和 AL 扩展创建了一个 Windows 容器。但是当我在容器内运行 alc.exe 时,它​​只是默默地失败了:

PS C:\> alc
PS C:\> $?  
False    

预期的输出将是:

Microsoft (R) AL Compiler version 7.4.7.37768
Copyright (C) Microsoft Corporation. All rights reserved

error AL1049: A project without a manifest must have the /out option specified.

alc.exe位于C:\Users\ContainerAdministrator\.vscode\extensions\ms-dynamics-smb.al-7.4.496506\bin,我把它放在 PATH 中。此目录中的其他程序按预期返回输出,例如webdeploy.exe.

这是重现问题的 Dockerfile:

FROM mcr.microsoft.com/windows/servercore:ltsc2019

SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]

# Set your PowerShell execution policy
RUN powershell Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Force

# Install Chocolatey on the docker container
RUN Set-ExecutionPolicy Bypass -Scope Process -Force; \
    [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; \
    iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))

# Install Chocolatey packages
RUN choco install dependencies vscode -y 
RUN code --install-extension ms-dynamics-smb.al

# Update path to include AL compiler
RUN $newPath = ('{0}/.vscode/extensions/ms-dynamics-smb.al-7.4.496506/bin;{1}' -f $env:USERPROFILE,$env:PATH); \
    Write-Host ('Updating PATH: {0}' -f $newPath); \
    [Environment]::SetEnvironmentVariable('PATH', $newPath, [EnvironmentVariableTarget]::Machine);

# Run it!
CMD echo "Hello World"

我尝试过的事情

我的第一个猜测是程序缺少一些 DLL,所以我使用Dependencies转储了 exe 使用的所有 DLL 。您可以在此处查看输出。有一些 DLL 被标记为 NOT_FOUND,但这些 DLL 与 webdeploy.exe 使用的 DLL 相同,所以我怀疑这与缺少 DLL 有关。

我还尝试了procmon的 CLI 版本,如下所示:

procmon /backingfile dockerlogs.pml /nofilter /quiet /accepteula 
alc 
procmon /terminate

但我最终得到了一个只有 1kb 的日志文件,它不包含任何事件。

任何想法这里有什么问题或我如何调试它?

4

0 回答 0