You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下安装.NET MAUI时执行dotnet workload install android报错求助

问题描述

通过sudo snap install dotnet-sdk --classic安装.NET SDK 7后,执行dotnet workload install android时出现只读文件系统错误,错误日志如下:

dotnet workload install android
Unhandled exception: System.IO.IOException: Read-only file system : '/snap/dotnet-sdk/216/metadata'
   at System.IO.FileSystem.CreateDirectory(String fullPath, UnixFileMode unixCreateMode)
   at System.IO.Directory.CreateDirectory(String path)
   at Microsoft.DotNet.Workloads.Workload.Install.WorkloadInstallerFactory.CanWriteToDotnetRoot(String dotnetDir)
   at Microsoft.DotNet.Workloads.Workload.Install.WorkloadInstallerFactory.GetWorkloadInstaller(IReporter reporter, SdkFeatureBand sdkFeatureBand, IWorkloadResolver workloadResolver, VerbosityOptions verbosity, String userProfileDir, Boolean verifySignatures, INuGetPackageDownloader nugetPackageDownloader, String dotnetDir, String tempDirPath, PackageSourceLocation packageSourceLocation, RestoreActionConfig restoreActionConfig, Boolean elevationRequired)
   at Microsoft.DotNet.Workloads.Workload.Install.WorkloadInstallCommand..ctor(ParseResult parseResult, IReporter reporter, IWorkloadResolver workloadResolver, IInstaller workloadInstaller, INuGetPackageDownloader nugetPackageDownloader, IWorkloadManifestUpdater workloadManifestUpdater, String dotnetDir, String userProfileDir, String tempDirPath, String version, IReadOnlyCollection`1 workloadIds, String installedFeatureBand)
   at Microsoft.DotNet.Cli.WorkloadInstallCommandParser.<>c.<ConstructCommand>b__6_0(ParseResult parseResult)
   at System.CommandLine.Invocation.InvocationPipeline.<>c__DisplayClass4_0.<<BuildInvocationChain>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at Microsoft.DotNet.Cli.Parser.<>c__DisplayClass17_0.<<UseParseErrorReporting>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.CommandLineBuilderExtensions.<>c__DisplayClass11_0.<<UseHelp>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.CommandLineBuilderExtensions.<>c.<<UseSuggestDirective>b__17_0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.CommandLineBuilderExtensions.<>c__DisplayClass15_0.<<UseParseDirective>b__0>d.MoveNext()
--- End of stack trace from previous location ---
   at System.CommandLine.CommandLineBuilderExtensions.<>c__DisplayClass7_0.<<UseExceptionHandler>b__0>d.MoveNext()
解决方法
  • 用户级安装工作负载:
    执行以下命令,将Android工作负载安装到用户目录,规避Snap包的只读限制:

    dotnet workload install android --user
    
  • 替换为官方脚本安装.NET SDK:
    如果用户级安装无效,可卸载Snap版本,改用官方脚本安装:

    1. 卸载Snap版本的.NET SDK:
      sudo snap remove dotnet-sdk
      
    2. 运行官方安装脚本(以7.0.408版本为例,可替换为最新的7.x版本号):
      curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version 7.0.408
      
    3. 配置环境变量:
      打开~/.bashrc或~/.zshrc文件,添加以下内容:
      export PATH="$HOME/.dotnet:$PATH"
      
      保存后执行source ~/.bashrc或source ~/.zshrc使配置生效。
  • Rider中配置SDK路径:
    打开Rider的设置(File > Settings > Build, Execution, Deployment > Toolset and Build),将SDK路径指向用户目录下的.dotnet文件夹(若使用脚本安装)。

内容的提问来源于stack exchange,提问作者Kelvin Kirwa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 12:44:55