全新Xamarin跨平台项目运行报错:找不到类型或命名空间‘App’
这种编译正常但运行时找不到类型的问题我碰到过好多次,大概率是项目引用或者Visual Studio缓存搞的鬼,给你整理几个靠谱的排查和修复步骤:
检查Android项目对共享类库的引用
右键Android项目 → 选择“项目引用”,确认那个定义了App的.NET Standard 2.0共享类库已经被勾选,引用状态正常。如果没找到,点击“添加引用”,手动选中共享类库添加进去。确认命名空间引用正确
打开Android项目里的MainActivity.cs,看看顶部有没有添加共享类库的命名空间引用,比如你的App在MyCoolApp.Shared命名空间下,就得加using MyCoolApp.Shared;。要是嫌麻烦,也可以直接用完整命名空间实例化:LoadApplication(new MyCoolApp.Shared.App());彻底清理缓存和项目文件
这是解决VS缓存问题的核心操作:- 点击菜单栏“生成” → “清理解决方案”
- 右键每个项目,选择“在文件资源管理器中打开”,手动删除
bin和obj文件夹 - 关闭Visual Studio,删除VS的缓存文件夹:
- Windows用户:打开文件管理器,输入
%LocalAppData%\Microsoft\VisualStudio\<你的VS版本号>\ComponentModelCache,删除里面的文件 - Mac用户:打开访达,前往
~/Library/Caches/VisualStudio/<你的VS版本号>,清理缓存文件
- Windows用户:打开文件管理器,输入
- 重新打开VS,点击“生成” → “重新生成解决方案”
检查共享类库的项目属性
右键共享类库 → “属性”,确认输出类型是“类库”,目标框架确实是.NET Standard 2.0,同时“生成”选项卡里的“输出路径”是默认的正常路径,没有被修改到奇怪的地方。验证Android项目的目标框架兼容性
确认Android项目的目标框架版本和共享类库兼容,Xamarin Forms项目一般建议选Android 12.0(S)或更高版本,同时确保你已经安装了对应的Android SDK组件。
如果上面的步骤都试过还是不行,可以尝试删除解决方案的.sln文件和项目的.csproj.user文件,然后重新加载项目;实在不行就新建一个干净的Xamarin Forms项目,把现有代码迁移过去——虽然麻烦,但有时候是最快解决缓存顽疾的办法。
内容的提问来源于stack exchange,提问作者Hanch

