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

Xamarin Android编译间歇性CS0117错误:Resource.Drawable无指定项定义

解决Xamarin Android类库间歇性Resource.Drawable编译错误的实用方案

针对你碰到的这个大型拆分式Xamarin Android应用里,Shared.Android类库偶尔出现的Resource.Drawable找不到seek.xml和seek_style.xml的诡异编译错误——明明IntelliSense能识别、Resource.designer.cs里有定义、文件也好好躺在drawable目录里,我整理了几个亲测有效的长效解决方案,你可以按顺序尝试:

1. 彻底清理并重建Resource.designer.cs

这类间歇性问题十有八九是Resource.designer.cs的缓存或生成顺序搞的鬼,手动强制刷新试试:

  • 右键点Shared.Android项目 → 卸载项目
  • 在解决方案管理器里找到项目下的Resource.designer.cs,直接删掉它
  • 右键项目 → 重新加载项目
  • 先右键解决方案→清理解决方案(清掉所有项目的bin/obj缓存),再重新生成整个解决方案

2. 严格检查资源的命名和配置规范

Xamarin Android对资源的要求有点“苛刻”,微小的不规范都可能触发间歇性问题:

  • 确认seek.xml和seek_style.xml的命名完全合规:只能用小写字母、数字、下划线,绝对不能有大写字母、连字符或者特殊字符
  • 检查drawable的变种目录(比如drawable-hdpi、drawable-xhdpi)里有没有同名但损坏的文件,这些变种资源如果有问题,会干扰主drawable目录的资源识别,建议统一清理或修复
  • 右键这两个xml文件→属性,确保它们的Build Action是AndroidResource,要是不小心设成了Content或其他类型,编译时就会被忽略

3. 调整项目依赖顺序+添加预生成事件

多项目拆分的场景下,依赖顺序不对很容易导致Shared.Android的资源生成滞后:

  • 右键解决方案→项目依赖项,确认App1.Android和App2.Android都把Shared.Android设为直接依赖,而且Shared.Android的生成优先级要高于这两个项目
  • 给Shared.Android加个预生成事件,强制每次编译前清掉旧的资源文件:
    打开项目属性→生成事件→预生成事件命令行,粘贴这段命令:
    del "$(ProjectDir)\Resources\Resource.designer.cs" /f /q
    
    这样每次编译Shared.Android都会重新生成最新的Resource.designer.cs,避免缓存冲突

4. 禁用增量编译

增量编译虽然能加快编译速度,但在多项目共享类库的场景下,很容易导致资源缓存不更新:

  • 右键Shared.Android项目→属性→Android选项→高级
  • 取消勾选启用增量Android构建
  • 同样的操作也可以给App1.Android和App2.Android安排上,彻底规避增量编译的缓存坑

5. 手动调整MSBuild的资源生成配置

如果上面的方法都没用,可以直接改项目的csproj文件,强制规范资源生成逻辑:

  • 右键项目→编辑项目文件
  • 找到<PropertyGroup>节点,添加或修改这几行配置:
    <AndroidUseManagedDesignTimeResourceGenerator>True</AndroidUseManagedDesignTimeResourceGenerator>
    <AndroidResgenFile>Resources\Resource.designer.cs</AndroidResgenFile>
    <AndroidResgenClass>Resource</AndroidResgenClass>
    
    这会强制使用托管的设计时资源生成器,减少原生资源生成的冲突概率

这些方案从缓存清理、资源规范、依赖顺序到编译配置,覆盖了这类间歇性问题的常见根源,亲测大部分情况下前两个方法就能解决问题,你可以挨个试试。

内容的提问来源于stack exchange,提问作者Kristian Williams

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 13:32:55