Xamarin Android新项目报错CS0117:Resource无对应定义求助
我之前也碰到过类似的资源识别问题,结合你已经做的排查步骤,给你补充几个更针对性的解决方案,应该能搞定这个CS0117: 'Resource.*'不包含*的定义错误:
检查Resource.Designer.cs的生成配置
右键项目里的Resource.Designer.cs文件→属性,确认两个关键设置:- 「自定义工具」必须是
MSBuild:GenerateResourceDesigner,如果不是手动修改,然后右键文件选择「运行自定义工具」重新生成资源绑定代码。 - 「生成操作」要设为「编译」,确保这个文件会被正常编译进项目。
- 「自定义工具」必须是
彻底清理项目缓存再重新生成
除了删除Obj/Debug,还要把项目根目录下的Bin文件夹、隐藏的.vs文件夹(包含VS的解决方案缓存)都删掉,然后关闭VS,重新打开后先执行「清理解决方案」,再执行「重新生成解决方案」。旧缓存残留是这类问题的常见元凶。核对AndroidManifest.xml的关键配置
检查Manifest里的package属性值,必须和项目的「程序集名称」「默认命名空间」完全一致(在项目属性→应用里查看)。另外,Manifest里引用的资源(比如android:icon、android:theme)有没有拼写错误,或者引用了不存在的资源ID。严格检查资源文件的命名规范
Xamarin Android对资源的命名有严格要求:- 资源文件名和资源ID只能用小写字母、数字和下划线,不能有大写、空格或特殊字符(比如
my_button.xml是合法的,MyButton.xml或my button.xml会导致资源无法识别)。 - 检查
layout、drawable、values等所有资源目录下的文件和内部资源项名称,确保符合规范。
- 资源文件名和资源ID只能用小写字母、数字和下划线,不能有大写、空格或特殊字符(比如
统一NuGet包和目标框架版本
因为你用了AppCompatActivity,要确保所有Xamarin.Android.Support系列的NuGet包版本完全一致,版本不兼容会导致资源生成异常。同时,项目的「目标Android版本」要和NuGet包支持的版本匹配(在项目属性→Android选项里设置)。重置VS组件缓存(针对Enterprise版)
如果是VS Enterprise版的组件缓存出问题,可以试试:- 关闭VS,找到路径
%LOCALAPPDATA%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache,删除该文件夹下的所有文件。 - 也可以打开VS开发者命令提示符,运行命令
devenv /ResetSettings重置VS配置(注意:这会清空你的VS个性化设置,谨慎操作)。
- 关闭VS,找到路径
内容的提问来源于stack exchange,提问作者netchicken

