在Visual Studio 2017社区版中,Xamarin Forms PCL的Debug.WriteLine的替代方法是什么

时间:2017-05-27 08:40:55

标签: xamarin uwp xamarin.forms xamarin.uwp

似乎Debug.WriteLine在Visual Studio 2017社区版中不起作用,如以下链接所述:Console.WriteLine does not output to Output Window in VS 2017

有人可以建议替代Xamarin Forms PCL吗? 当我从PCL查看Debug对象时,我只看到WriteLine的方法,所以我很难看到如何连接到不同的Listener。

当我查看System.Diagnostics命名空间的Xamarin文档时,它列出了许多我似乎无法从我的PCL中访问的方法和类。例如,' TraceListener'班级不见了。这是正确的行为吗?

1 个答案:

答案 0 :(得分:1)

System.Diagnostic.Debug.WriteLine()适用于PCL项目,.NET标准项目和使用Visual Studio 2017的Xamarin.Android/Xamarin.iOS项目。

你自己试过吗?

然而,

System.Console.WriteLine()在PCL项目中不起作用,尽管这与您正在使用的IDE无关,而且与how PCL projects work有关,但在Xamarin.Android/中有效。 Xamarin.iOS项目。如果您想在PCL项目中使用System.Console.WriteLine(),可以通过各种方法使用本机代码。其中一个是DependencyService.Get<>()

创建以下类:

PCL:

public interface IPlatformHelpers {
    void WriteLine(string text);
}

iOS&amp;机器人:

[assembly: Dependency(typeof(PlatformHelpers))]

namespace App.<iOS | Android> {

    public class PlatformHelpers : IPlatformHelpers {

        public void WriteLine(string text) {
            System.Console.WriteLine(text);
        }
    }
}

现在,您可以在PCL中执行此操作:

IPlatformHelpers helper = DependencyService.Get<IPlatformHelpers>();

helper.WriteLine("Angry BLAH!");

有趣的是,似乎System.Console.WriteLine()可能在.NET标准项目中可用(至少对于.NET标准1.3+),尽管我自己还没有尝试过。