CS0117 - Xamarin 未检测到 'Resources' 个文件夹和文件
CS0117 - Xamarin not detecting 'Resources' folders and files
我一直在开发一个 Xamarin.Forms
应用程序,最初是在 iOS,现在是 Android。
我 运行 遇到一个问题,我的代码无法看到 MainActivity.cs
中引用的资源。
我对两个不同的资源有同样的错误。
我正在学习 Udemy 课程,讲师强调手动构建一些 xml
文件,因此有两种类型,axml
和 xml
。
第一个错误
/Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(35,35):
Error CS0117: `NoteTaker.Droid.Resource' does not contain a definition for `Menu' (CS0117) (NoteTaker.Droid)
第二个错误:
/Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(21,21):
Error CS0117: `NoteTaker.Droid.Resource.Id' does not contain a definition for `action_add' (CS0117) (NoteTaker.Droid)
MainActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using SupportToolbar = Android.Support.V7.Widget.Toolbar;
using Android.Support.V7.App;
using System.Collections.Generic;
namespace NoteTaker.Droid
{
[Activity (Label = "Note Taker", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
int count = 1;
private SupportToolbar toolbar;
protected override void OnCreate (Bundle savedInstanceState)
{
Xamarin.Insights.Initialize (XamarinInsights.ApiKey, this);
base.OnCreate (savedInstanceState);
new Database ();
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
toolbar = FindViewById<SupportToolbar> (Resource.Id.toolbar);
SetSupportActionBar (toolbar);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += delegate {
button.Text = string.Format ("{0} clicks!", count++);
};
}
public override bool OnCreateOptionsMenu (IMenu menu)
{
MenuInflater.Inflate (Resource.Menu.addmenu, menu);
return base.OnCreateOptionsMenu (menu);
}
public override bool OnOptionsItemSelected (IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.action_add:
Console.WriteLine ("Add button clicked");
return true;
default:
return base.OnOptionsItemSelected (item);
}
}
}
}
addmenu.xml
其中包含 action_add
id。
<?xml version="1.0" encoding="UTF-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_add"
android:icon="@drawable/addIcon"
android:title="Add"
app:showAsAction="always"
/>
</menu>
Resources
树
~/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid
tree Resources/
Resources/
├── AboutResources.txt
├── Resource.designer.cs
├── drawable
│ └── addIcon.png
├── layout
│ ├── Main.axml
│ └── Toolbar.xml
├── menu
│ └── addmenu.xml
├── mipmap-hdpi
│ └── Icon.png
├── mipmap-mdpi
│ └── Icon.png
├── mipmap-xhdpi
│ └── Icon.png
├── mipmap-xxhdpi
│ └── Icon.png
├── mipmap-xxxhdpi
│ └── Icon.png
└── values
├── Strings.xml
└── styles.xml
9 directories, 13 files
好的,我知道问题出在哪里了。
以前,当我编码时,我最初将 'menu' 文件夹放在错误的目录中。
我是通过不小心右键单击 'layout' 并单击 'Add/New Folder'.
来完成此操作的
当我手动将文件夹拖放到正确的位置时,问题就来了。
但似乎 Xamarin 只能识别通过右键单击选项添加的文件和文件夹,然后编译器只能在其原始的、不正确的位置看到这些文件。
但是,仅通过右键单击/'Remove' 删除文件并不能解决问题。
虽然目标文件已从 Xamarin UI 中删除,但并未从磁盘上的项目目录中删除,因此无法添加具有相同名称的新文件。
我不得不导航到项目文件夹,然后 运行 rm -rf menu
将其删除。
然后回到Xamarin,右键click/Add/New文件夹和新建文件
之后我清理了项目并重新构建,它运行得非常棒。
Xamarin 论坛上的 post 让我知道了问题所在。
我遇到了同样的问题,但是我用新建文件夹和新建文件创建了文件夹和文件。
我的解决方案是清理 构建,然后全部构建,然后再使用Resource.Menu。
全部构建完成后,一切正常。
我认为替代方法是从您的项目文件夹中删除 "bin" 和 "obj" 文件夹。
花了我一段时间,但我是这样工作的:
如果它是 xamarin 表单应用程序,请更改
"Resource.Layout.Xxxx" => "Droid.Resource.Layout.Xxx"
我一直在开发一个 Xamarin.Forms
应用程序,最初是在 iOS,现在是 Android。
我 运行 遇到一个问题,我的代码无法看到 MainActivity.cs
中引用的资源。
我对两个不同的资源有同样的错误。
我正在学习 Udemy 课程,讲师强调手动构建一些 xml
文件,因此有两种类型,axml
和 xml
。
第一个错误
/Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(35,35):
Error CS0117: `NoteTaker.Droid.Resource' does not contain a definition for `Menu' (CS0117) (NoteTaker.Droid)
第二个错误:
/Users/richardcurteis/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid/MainActivity.cs(21,21):
Error CS0117: `NoteTaker.Droid.Resource.Id' does not contain a definition for `action_add' (CS0117) (NoteTaker.Droid)
MainActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using SupportToolbar = Android.Support.V7.Widget.Toolbar;
using Android.Support.V7.App;
using System.Collections.Generic;
namespace NoteTaker.Droid
{
[Activity (Label = "Note Taker", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : AppCompatActivity
{
int count = 1;
private SupportToolbar toolbar;
protected override void OnCreate (Bundle savedInstanceState)
{
Xamarin.Insights.Initialize (XamarinInsights.ApiKey, this);
base.OnCreate (savedInstanceState);
new Database ();
// Set our view from the "main" layout resource
SetContentView (Resource.Layout.Main);
toolbar = FindViewById<SupportToolbar> (Resource.Id.toolbar);
SetSupportActionBar (toolbar);
// Get our button from the layout resource,
// and attach an event to it
Button button = FindViewById<Button> (Resource.Id.myButton);
button.Click += delegate {
button.Text = string.Format ("{0} clicks!", count++);
};
}
public override bool OnCreateOptionsMenu (IMenu menu)
{
MenuInflater.Inflate (Resource.Menu.addmenu, menu);
return base.OnCreateOptionsMenu (menu);
}
public override bool OnOptionsItemSelected (IMenuItem item)
{
switch (item.ItemId)
{
case Resource.Id.action_add:
Console.WriteLine ("Add button clicked");
return true;
default:
return base.OnOptionsItemSelected (item);
}
}
}
}
addmenu.xml
其中包含 action_add
id。
<?xml version="1.0" encoding="UTF-8" ?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/action_add"
android:icon="@drawable/addIcon"
android:title="Add"
app:showAsAction="always"
/>
</menu>
Resources
树
~/Desktop/OneDrive/DevShared/XamarinProjects/NoteTaker/Droid
tree Resources/
Resources/
├── AboutResources.txt
├── Resource.designer.cs
├── drawable
│ └── addIcon.png
├── layout
│ ├── Main.axml
│ └── Toolbar.xml
├── menu
│ └── addmenu.xml
├── mipmap-hdpi
│ └── Icon.png
├── mipmap-mdpi
│ └── Icon.png
├── mipmap-xhdpi
│ └── Icon.png
├── mipmap-xxhdpi
│ └── Icon.png
├── mipmap-xxxhdpi
│ └── Icon.png
└── values
├── Strings.xml
└── styles.xml
9 directories, 13 files
好的,我知道问题出在哪里了。 以前,当我编码时,我最初将 'menu' 文件夹放在错误的目录中。 我是通过不小心右键单击 'layout' 并单击 'Add/New Folder'.
来完成此操作的当我手动将文件夹拖放到正确的位置时,问题就来了。 但似乎 Xamarin 只能识别通过右键单击选项添加的文件和文件夹,然后编译器只能在其原始的、不正确的位置看到这些文件。
但是,仅通过右键单击/'Remove' 删除文件并不能解决问题。
虽然目标文件已从 Xamarin UI 中删除,但并未从磁盘上的项目目录中删除,因此无法添加具有相同名称的新文件。
我不得不导航到项目文件夹,然后 运行 rm -rf menu
将其删除。
然后回到Xamarin,右键click/Add/New文件夹和新建文件
之后我清理了项目并重新构建,它运行得非常棒。
Xamarin 论坛上的 post 让我知道了问题所在。
我遇到了同样的问题,但是我用新建文件夹和新建文件创建了文件夹和文件。
我的解决方案是清理 构建,然后全部构建,然后再使用Resource.Menu。 全部构建完成后,一切正常。
我认为替代方法是从您的项目文件夹中删除 "bin" 和 "obj" 文件夹。
花了我一段时间,但我是这样工作的:
如果它是 xamarin 表单应用程序,请更改 "Resource.Layout.Xxxx" => "Droid.Resource.Layout.Xxx"