Visual Studio 2017中Resource.Designer.cs智能感知歧义引用问题
解决Xamarin.Android中Resource类歧义引用与同名成员重复声明问题
我之前在VS2017开发Xamarin.Android项目时,也碰到过几乎一模一样的问题——项目能正常构建部署,但智能感知一直报Ambiguous Reference,打开Resource.Designer.cs还提示“Member with the same name is already declared”,改命名空间、重建项目甚至新建项目都没用,折腾了好一阵才找到几个有效的解决办法,分享给你:
1. 彻底清理并重新生成Resource.Designer.cs
这是最常见的解决思路,很多时候是自动生成的文件出现了重复定义:
- 右键项目 → 选择清理,先清空现有构建产物
- 找到项目中
Resources文件夹下的Resource.Designer.cs文件,直接删除(不用担心,系统会重新生成) - 右键项目 → 选择生成,等待系统自动重新生成Resource.Designer.cs
生成后可以检查这个文件的内容,确认没有重复的成员声明。另外你提供的.csproj配置看起来是正常的,确保这些配置没有被重复定义:
<AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile> <AndroidResgenClass>Resource</AndroidResgenClass> <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies> <AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk> <TargetFrameworkVersion>v7.1</TargetFrameworkVersion> <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest> <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix> <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
2. 清理Visual Studio与Xamarin缓存
智能感知报错但构建正常,大概率是VS的缓存出了问题:
- 完全关闭Visual Studio 2017
- 删除以下路径的缓存文件夹:
%LOCALAPPDATA%\Microsoft\VisualStudio\15.0\ComponentModelCache(VS2017的组件模型缓存)%LOCALAPPDATA%\Xamarin(Xamarin的资源与SDK缓存)
- 重启VS,重新打开项目并生成
3. 检查项目中是否存在重复的Resource定义
有时候可能不小心在项目中添加了自定义的Resource类,或者引用的第三方库中也包含同名的Resource类:
- 全局搜索项目中的
class Resource,看是否有除了Resource.Designer.cs之外的定义 - 检查项目引用的NuGet包或DLL,确认没有其他库导出了同名的Resource类
4. 修复Xamarin.Android组件安装
既然你怀疑是安装问题,可以尝试修复VS中的Xamarin组件:
- 打开Visual Studio安装程序,找到已安装的VS2017实例,点击修改
- 在工作负载中找到移动开发.NET,确保
Xamarin.Android组件已勾选 - 点击修改,等待安装程序完成组件修复
这些方法我当时试下来,清理缓存+重新生成Resource.Designer.cs就解决了问题,你可以按顺序试试。
内容的提问来源于stack exchange,提问作者Erich Dingeldein
相关产品推荐
相关产品推荐

