.NET CLI构建.NET 6 Xamarin iOS应用时找不到指定editorconfig文件
问题描述
使用.NET CLI构建从旧版本升级的.NET 6 Xamarin iOS应用时,触发CS2001错误,提示找不到指定的editorconfig文件:
#[error]CSC(0,0): Error CS2001: Source file '/Users/runner/work/1/s/TestApplication/obj/arm64/ReleaseiPhone/net6.0-ios16.0/ios-arm64/TestApplication.GeneratedMSBuildEditorConfig.editorconfig' could not be found.
查看编译命令,发现Roslyn编译器被传入了指向该缺失文件的/analyzerconfig参数:
/analyzerconfig:"obj/arm64/Release|iPhone/net6.0-ios16.0/ios-arm64/TestApplication.GeneratedMSBuildEditorConfig.editorconfig" /analyzerconfig:/Users/runner/hostedtoolcache/dotnet/sdk/6.0.402/Sdks/Microsoft.NET.Sdk/analyzers/build/config/analysislevel_6_default.editorconfig
尝试添加/p:RunAnalyzersDuringBuild=false参数无效,该问题属于.NET 6构建的新行为,与项目从旧版本升级有关。
解决方案
1. 禁用自动生成MSBuild EditorConfig文件
在项目的.csproj文件中添加以下属性,阻止MSBuild生成该文件,同时移除编译时的对应参数引用:
<PropertyGroup> <GenerateMSBuildEditorConfigFile>false</GenerateMSBuildEditorConfigFile> </PropertyGroup>
2. 手动创建缺失的文件
在报错路径/Users/runner/work/1/s/TestApplication/obj/arm64/ReleaseiPhone/net6.0-ios16.0/ios-arm64/下创建空白的TestApplication.GeneratedMSBuildEditorConfig.editorconfig文件,让Roslyn编译器能找到该文件。
3. 清理缓存后重新构建
执行以下命令清理旧构建缓存,避免残留的错误路径影响:
dotnet clean dotnet build -c Release -f net6.0-ios -r ios-arm64 /p:Platform=iPhone
4. 升级.NET SDK至最新补丁版
该问题在.NET 6的部分早期SDK版本(如6.0.402)中存在,升级到.NET 6的最新补丁版本(如6.0.410及以上),官方已修复部分路径解析相关的问题。
内容的提问来源于stack exchange,提问作者anon

