使用Mono编译.cs文件时遇程序集引用缺失问题求助
解决Mono编译.NET 6/7控制台项目的程序集引用错误
先纠正最明显的命令错误
你写的编译命令mcs /out:AmazonProductCheck.cs *.cs存在参数错误:/out指定的是输出的可执行文件名,而非.cs源文件,正确写法应为:
mcs /out:AmazonProductCheck.exe *.cs
报错核心原因
mcs是Mono针对传统.NET Framework的编译器,对.NET 6/7这类现代SDK风格项目的支持有限,无法自动识别新框架下的程序集依赖,这就是你反复遇到「缺少程序集引用」错误的关键原因。
适配.NET 6/7的最优编译方案(推荐)
直接使用官方.NET SDK命令编译,完美匹配你的项目框架,步骤如下:
- 打开终端,进入项目根目录(包含
.csproj文件的文件夹) - 编译Release版本:
编译后的可执行文件会在dotnet build -c Releasebin/Release/net7.0/(若目标框架是.NET 6则为net6.0)目录下,直接运行./AmazonProductCheck即可。 - 若需生成独立可执行文件(无需目标机器安装.NET SDK):
生成的文件在dotnet publish -c Release -r osx-x64 --self-contained truebin/Release/net7.0/osx-x64/publish/目录,复制该文件夹到任意Mac机器即可直接运行。
坚持用Mono编译的补救方法
如果必须使用mcs,需显式引用项目依赖的核心程序集,命令示例:
mcs /reference:System.dll /reference:System.Core.dll /reference:System.Runtime.dll /out:AmazonProductCheck.exe *.cs
注意:这种方法仅适配使用基础API的简单项目,无法兼容.NET 6/7的部分新特性。
设置定时运行
生成可执行文件后,用Mac自带的crontab配置计划任务:
- 编辑crontab规则:
crontab -e - 添加定时指令(示例:每天9点运行):
0 9 * * * /完整路径/AmazonProductCheck - 保存退出后规则自动生效。
内容的提问来源于stack exchange,提问作者graydad
相关产品推荐
相关产品推荐

