共享Xamarin.Forms - 命名空间中不存在名为'App'的类型或命名空间

3

我正在学习这个Xamarin.Forms教程。我按照说明构建了一个共享项目,但我在下载的一个文件上出错了,该文件应该让我的应用程序在Android上访问拨号功能。

这是我收到的完整错误信息:

CS0234  The type or namespace name 'App' does not exist in the namespace 'Phoneword.Android' (are you missing an assembly reference?)   Phoneword.Android

我在网上找到了几个听起来相似的错误,包括这个,但是没有一个解决方案适用于我。一般趋势似乎是App类位于Shared项目中,因此可能会导致引用出错,但是我已经删除了Shared项目对Android的引用,然后出现了大量其他错误,然后我重新添加了它,除了"App"之外的所有错误都消失了。因此,我不认为这是一个引用问题。 PhoneDialer.Droid.cs(我标记了出错的那一行)
using Android.Content;
using System.Linq;
using System.Threading.Tasks;
using Android.Telephony;
using Xamarin.Forms;
using Phoneword.Android;

using Uri = Android.Net.Uri;
[assembly: Dependency(typeof(PhoneDialer))]

namespace Phoneword.Android
{
    public class PhoneDialer : IDialer
    {
        public Task<bool> DialAsync(string number)
        {
            var context = Android.App.Application.Context; //<=ERROR
            ...
        }
        ...
    }
}

当我将代码中的“App”更改为“Phoneword.App.Application.Context”时,没有出现任何错误,但随后出现了“Application不存在”的错误提示。
有人知道问题出在哪里吗?
我已将解决方案上传至github,以便于查看全部代码: https://github.com/joeymorano/Phoneword

如果你能够将项目上传至Github,或许其他人就可以更容易地提供帮助。 - Shiwanka Chathuranga
@ShiwankaChathuranga 好主意,我添加了一个 Github 链接。 - Joe Morano
1个回答

4
Cheeky Error....
将当前命名空间namespace Phoneword.Android更改为namespace Phoneword.Droid,一切都会正常工作。
当您拥有名为namespace Phoneword.Android的命名空间并尝试访问Android.App.Application.Context时,Android。将引用您当前的项目...而不是Android本地库。

enter image description here


那么我也应该将“using Phoneword.Android;”这一行改为“using Phoneword.Droid;”吗? - Joe Morano
1
哇,我真不敢相信那就是问题所在。非常感谢!你会建议把整个项目重命名为Phoneword.Droid吗? - Joe Morano

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接