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

Xamarin报错‘Resource不存在于当前上下文’,求有效解决方案

解决Xamarin Android中“The name 'Resource' does not exist in the current context”的间歇性问题

我之前也碰到过这个烦人的问题,VS2015 + Xamarin的组合偶尔确实会抽风,尤其是资源文件生成出问题的时候。结合你描述的情况——重启项目能临时解决、没改代码却突然报错,大概率是资源文件生成异常或者VS的缓存问题,给你几个亲测有效的解决步骤:

1. 强制重新生成资源文件

这是最常用也最有效的方法,因为Resource类是VS自动生成的Resource.designer.cs文件提供的,一旦这个文件没正确更新就会报错:

  • 右键你的Android项目 → 选择卸载项目
  • 等项目卸载完成后,再右键 → 重新加载项目
  • 点击顶部菜单的生成 → 重新生成解决方案
    这个操作会强制VS重新解析所有布局、资源文件,彻底重建Resource.designer.cs,很多时候能直接解决问题。

2. 清理VS缓存和项目临时文件

VS的缓存有时候会在更新后乱掉,导致各种奇怪的编译问题:

  • 完全关闭VS2015
  • 找到VS的组件缓存目录:C:\Users\[你的用户名]\AppData\Local\Microsoft\VisualStudio\14.0\ComponentModelCache,删除该目录下所有文件
  • 打开项目所在文件夹,手动删除bin和obj两个文件夹(这两个是编译生成的临时文件,删除后会自动重建)
  • 重新打开VS加载项目,再执行一次重新生成。

3. 检查资源文件命名规范

虽然你说没修改项目,但有时候自动更新或者误操作可能导致资源命名违规(Xamarin对资源文件名有严格要求):

  • 检查Resources目录下的所有文件(布局、drawable、values等),确保文件名全为小写字母,只能用下划线_分隔,不能有空格、大写字母或特殊符号
  • 如果发现违规文件名,修改后重新生成项目。

4. 验证SDK与Xamarin版本兼容性

VS2015的Xamarin版本和Android SDK版本不匹配也可能导致资源生成异常:

  • 打开VS的工具 → 选项 → Xamarin → Android设置,确认项目的目标SDK版本和你已安装的SDK版本一致
  • 通过工具 → 扩展和更新,将Xamarin更新到VS2015支持的最新稳定版本,尽量保持SDK和Xamarin版本的兼容性。

如果以上方法都试过还是间歇性出现问题,那可能是VS2015本身的遗留bug——毕竟VS2015已经比较老旧了。如果条件允许,建议升级到更新的VS版本(比如VS2022);如果必须用VS2015,可以养成每次启动项目前先执行“重新生成解决方案”的习惯,能大幅减少这个问题的出现概率。

你的代码示例

using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using Android.Views.InputMethods;
using Android.Graphics.Drawables;
using Android.Graphics;

namespace Designer
{
    [Activity(Label = "Designer", MainLauncher = true)]
    public class MainActivity : Activity
    {
        // Global Varialble
        Button butSignIn;
        EditText tbxUsername;
        TextView txtErrorMsg;

        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            butSignIn = FindViewById<Button>(Resource.Id.butSignIn);
            butSignIn.Click += ButSignIn_Click;
            tbxUsername = FindViewById<EditText>(Resource.Id.txtUsername);
            txtErrorMsg = FindViewById<TextView>(Resource.Id.txtErrorMessage);

            ActionBar.SetDisplayShowTitleEnabled(false);
            ColorDrawable colorDrawable = new ColorDrawable(Color.ParseColor("#ff70bc1e"));
            ActionBar.SetBackgroundDrawable(colorDrawable);
        }

        private void ButSignIn_Click(object sender, System.EventArgs e)
        {
            if (tbxUsername.Text == "Azmodan")
            {
                Intent intent = new Intent(this, typeof(MenuActivity));
                this.StartActivity(intent);
                this.Finish(); // this will close the activity and will close app if we try go back
            }
            else
            {
                txtErrorMsg.Visibility = ViewStates.Visible;
                txtErrorMsg.Text = "inccorect login details, please try again";
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:24:19