CMD调用AL编译器报DotNet错误,但VS Code内置编译正常的问题
解决CMD调用AL编译器时的DotNet缺失错误
问题根源
VS Code里按Ctrl+Shift+B编译时,会自动读取项目.vscode目录下的tasks.json配置,里面已经包含了目标框架版本、必要的DotNet程序集引用这些关键参数。但手动执行的alc.exe命令没加这些参数,编译器找不到对应的DotNet类型,因此报错。
两种解决办法
办法1:给CMD命令补全必要参数
在原有命令基础上添加目标框架和DotNet程序集引用参数:
/target:指定项目对应的Business Central版本(比如/target:18.0,需根据实际版本调整)/reference:添加需要的DotNet程序集路径,比如System.dll和System.Net.Http.dll
修正后的命令示例:
C:\Users\dsda\.vscode\extensions\ms-dynamics-smb.al-11.5.834620\bin\alc.exe /project:. /packagecachepath:./.alpackages/ /out:test.app /target:18.0 /reference:"C:\Program Files\Microsoft Dynamics 365 Business Central\180\Service\System.dll" /reference:"C:\Program Files\Microsoft Dynamics 365 Business Central\180\Service\System.Net.Http.dll"
办法2:直接复用VS Code的编译命令
- 打开项目中的
.vscode/tasks.json文件 - 找到编译任务对应的
command字段,将完整命令复制到CMD中直接执行,无需自行拼接参数
注意事项
- 目标版本号要与项目对应的Business Central版本一致
- 程序集路径需匹配本地Business Central的安装目录,注意修改路径中的版本号部分
- 如果项目用到了其他自定义DotNet组件,也要通过
/reference:参数添加对应的dll路径
内容的提问来源于stack exchange,提问作者Andy lam
相关产品推荐
相关产品推荐

