【问题标题】:Xamarin 'Resource.Layout' does not contain a definition for '*' ErrorXamarin“Resource.Layout”不包含“*”错误的定义
【发布时间】:2019-08-18 11:26:52
【问题描述】:

必需的 Android 支持库

套件中的控件需要特定的 Xamarin Android 支持库才能在 Android 上正确呈现。

以下列出了使用我们套件的所有 Android 项目的常见要求:

Xamarin Forms 包的最低要求版本是 3.4。 所有 Xamarin Android 支持库的最低要求版本为 27.0.2.1。 这里列出了所有的包:

Xamarin.Android.Support.v4
Xamarin.Android.Support.Design
Xamarin.Android.Support.v7.AppCompat
Xamarin.Android.Support.v7.CardView
Xamarin.Android.Support.v7.MediaRouter
Xamarin.Android.Support.Vector.Drawable
Xamarin.Android.Support.Animated.Vector.Drawable
Xamarin.Android.Support.v7.RecyclerView
Xamarin.Android.Support.v8.RenderScript 

Android 项目的目标 Android 版本应为 Android 8.1(API 级别 27)或更高版本。

必须安装相应的目标 Android 版本 Android SDK 才能使用所需的支持库(从 Android SDK 管理器安装)。”

按照这个,仍然收到两个错误:

Error:CS0117 
'Resource.Layout' does not contain a definition for 'Tabbar'
'Resource.Layout' does not contain a definition for 'Toolbar'

尝试使用 Visual Studio 中的 Android SDK 管理器卸载和重新安装 SDK、SDK 工具、SDK 平台工具、SDK 构建工具、Android 模拟器、LLDB、NDK、Extras 和 SDK Patcher Applier v4。

删除bin/obj文件夹,重启VS,清理,重建。

错误仍然存​​在。 如何修复错误 CS0117 Xamarin 'Resource.Layout' 不包含 '*' 的定义?

1>  C:\Users\...\MyApp.Android\MainActivity.cs(44,49,44,53): error CS0117: 'Resource.Layout' does not contain a definition for 'Tabbar'
1>  C:\Users\...\MyApp.Android\MainActivity.cs(45,47,45,52): error CS0117: 'Resource.Layout' does not contain a definition for 'Toolbar'

protected override void OnCreate(Bundle bundle)
{
_Instance = this;

TabLayoutResource = Resource.Layout.Tabbar; (LINE 44)
ToolbarResource = Resource.Layout.Toolbar;  (LINE 45)

base.OnCreate(bundle); (LINE 47)

CrossCurrentActivity.Current.Init(this, bundle); (LINE 49)
global::Xamarin.Forms.Forms.Init(this, bundle);

Metrics = Resources.DisplayMetrics; (LINE 52)
widthInDp = ConvertPixelsToDp(Metrics.WidthPixels); (LINE 53)
heightInDp = ConvertPixelsToDp(Metrics.HeightPixels);

LoadApplication(new App());
}

【问题讨论】:

  • 你能清理 -> 重建你的解决方案吗?
  • @Batuhan 删除 bin/obj 文件夹,清理,重建 - 什么都没有。错误仍然存​​在。
  • 你可以打开Resources.designer.cs,它是Xamarin在你编辑任何资源文件时生成的一个类。它包含对 xml/axml 文件中任何声明、id 等的引用。如果资源有错误,Resources.designer.cs 生成将失败,但您会得到一个非常模糊的错误提示。会出现细节错误,请点击Tools->options->xamarin->android settings->xamarin Diagnostics->output verbosity->选择details;然后点击Tools ->options->projects and solutions->build and run->MSBuild project build output verbosity ->选择detailed
  • 然后再次编译您的项目并检查输出窗口。它会告诉你到底是什么问题。
  • @LeonLu-MSFT 擦除并重新安装安装 - 没有变化。删除和重新生成 Resources.designer.cs - 没有变化。将其与新生成的Xamarin.FormsResources.designer.cs 进行比较,特别是关于TabbarToolbar - 没有区别。更改详细程度会导致相同的输出,除了我认为是行引用。将此添加到原始帖子(OP)中。还有什么可以尝试的?

标签: android xamarin xamarin.forms xamarin.android


【解决方案1】:

与 Android 构建错误相关的各种问题(例如这个问题)的答案各不相同。现在,对我自己来说,解决方法是撤消对Packages.config 和项目文件本身的所有更改,在我的情况下为Android.csproj。值得一提的是,我看到了一个新错误:Ambiguity between 'Resource.Layout.Tabbar' and 'Resource.Layout.Tabbar'Toolbar 也是如此),但它不会阻止构建和部署。

另一种可能的解决方案,注意到Resources.designer.cs 文件存在于Resources 文件夹和Resources\drawable 文件夹中。排除先验似乎有效。不知道为什么有两个。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 2018-01-05
    • 2018-09-29
    • 1970-01-01
    • 2016-03-06
    • 2018-12-25
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 2018-03-07
    相关资源
    最近更新 更多