Linux下构建Avalonia应用遇MSB4018错误:Rider失败VSCode正常
Linux下JetBrains Rider构建Avalonia应用出现Error MSB4018的解决方案
问题现象
- Linux系统中用Rider构建Avalonia应用时抛出
Error MSB4018,提示找不到路径/home/user1/dev/src/app/**/*.axaml - Windows环境构建正常;刚从Git检出代码时可成功构建,但后续重建均失败,清理解决方案目录也无效
- 切换到VSCode使用
dotnet build可正常完成构建
问题原因
这是Rider在Linux环境下处理Avalonia项目AXAML文件glob通配符的兼容性问题:Rider内置的构建系统对**通配符的解析逻辑与官方MSBuild(命令行/VSCode使用的版本)存在差异,导致后续构建无法正确匹配AXAML资源文件。
解决方法
1. 直接使用MSBuild命令行构建
在项目根目录执行以下命令,绕过Rider内置构建逻辑:
dotnet build
2. 重置Rider项目缓存
- 关闭Rider
- 删除Rider对应解决方案的缓存目录,典型路径为:
~/.local/share/JetBrains/Rider<版本号>/solutions/<你的解决方案名> - 重新打开Rider加载解决方案后尝试构建
3. 调整项目文件中的AXAML引用方式
打开项目的.csproj文件,修改AXAML资源的引用规则:
- 原写法(可能触发问题):
<ItemGroup> <AvaloniaResource Include="**/*.axaml" /> </ItemGroup>
- 改为分目录明确引用(如果文件结构固定):
<ItemGroup> <AvaloniaResource Include="Views/**/*.axaml" /> <AvaloniaResource Include="Controls/**/*.axaml" /> </ItemGroup>
- 或者使用
Recursive属性替代**通配符:
<ItemGroup> <AvaloniaResource Include="*.axaml" Recursive="true" /> </ItemGroup>
4. 更新Rider至最新稳定版
JetBrains可能已修复此类Linux环境下的构建兼容性问题,通过Help > Check for Updates升级Rider后重试构建。
内容的提问来源于stack exchange,提问作者user1851622
相关产品推荐
相关产品推荐

