关于Mono是否支持.NET Standard 2.0.0的技术咨询
嘿,我来帮你搞定这个问题!首先明确回答核心疑问:Mono从5.4版本开始就正式支持.NET Standard 2.0.0了,你遇到的Could not locate the assembly 'netstandard'错误,大概率是环境配置或项目引用的问题,而非Mono本身不支持该标准。
下面给你几个针对性的解决步骤:
检查并升级Mono版本
先在Ubuntu终端里运行mono --version查看当前版本,如果低于5.4,直接升级到最新稳定版即可。可以用官方包源执行升级:sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF echo "deb https://download.mono-project.com/repo/ubuntu stable-focal main" | sudo tee /etc/apt/sources.list.d/mono-official-stable.list sudo apt update && sudo apt install mono-devel注意:上述命令中的
stable-focal对应Ubuntu 20.04,如果你用的是其他版本(比如18.04),替换成stable-bionic即可。修正项目的.NET Standard目标配置
虽然Windows上更新VS后解决了问题,但Linux下要确保项目文件(.csproj)的配置正确。打开你的项目文件,确认包含以下配置段:<PropertyGroup> <TargetFramework>netstandard2.0</TargetFramework> </PropertyGroup>如果是老版本VS创建的项目,可能存在引用偏差,手动修正后重新保存。
清理并重新还原NuGet依赖
缓存的NuGet包可能导致引用异常,在项目目录下执行以下命令:nuget restore或者用你已安装的.NET Core 2 SDK执行:
dotnet restore完成还原后,重新构建项目:
msbuild /t:Rebuild验证Mono的程序集路径
如果还是找不到netstandard程序集,可以手动检查它是否存在于Mono的安装目录中,常见路径为/usr/lib/mono/netstandard/2.0/或/usr/lib/mono/4.5/Facades/。如果缺失,重新安装完整的Mono开发包(mono-devel)即可。
你在Windows上通过更新VS解决问题,本质是新版VS自带了适配.NET Standard 2.0的工具链和引用配置,Linux下只要确保Mono版本达标、项目配置正确,就能解决类似问题。
内容的提问来源于stack exchange,提问作者Nore Gabbidon

