Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual Studio 2017社区版中Xamarin Forms PCL的Debug.WriteLine的替代方案是什么_Xamarin_Uwp_Xamarin.forms_Xamarin.uwp - Fatal编程技术网

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

Visual Studio 2017社区版中Xamarin Forms PCL的Debug.WriteLine的替代方案是什么,xamarin,uwp,xamarin.forms,xamarin.uwp,Xamarin,Uwp,Xamarin.forms,Xamarin.uwp,Debug.WriteLine似乎在Visual Studio 2017社区版中不起作用,如以下链接中所述: 有人能推荐Xamarin Forms PCL的替代品吗? 当我从PCL查看调试对象时,我只看到WriteLine的方法,所以我很难看到如何连接到不同的侦听器 当我查看System.Diagnostics命名空间的Xamarin文档时,它列出了许多我似乎无法从PCL中访问的方法和类。例如,缺少“TraceListener”类。这种行为正确吗?System.Diagnostic.Debug.

Debug.WriteLine似乎在Visual Studio 2017社区版中不起作用,如以下链接中所述:

有人能推荐Xamarin Forms PCL的替代品吗? 当我从PCL查看调试对象时,我只看到WriteLine的方法,所以我很难看到如何连接到不同的侦听器

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

System.Diagnostic.Debug.WriteLine在使用Visual Studio 2017的PCL项目、.NET标准项目和Xamarin.Android/Xamarin.iOS项目中运行良好

你自己试过吗

然而,System.Console.WriteLine在PCL项目中不起作用,尽管它与您正在使用的IDE无关,并且与之有更多的关系,但在Xamarin.Android/Xamarin.iOS项目中起作用。如果希望在PCL项目中使用System.Console.WriteLine,可以通过各种方法访问本机代码。其中之一是DependencyService.Get

创建以下类:

PCL:

iOS和Android:

[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+中可用,尽管我自己还没有实际试用过。

是的,我肯定已经测试过了。您正在使用哪个版本的Visual Studio?我认为这个问题可能是Visual Studio 2017社区版所特有的,正如我在上面提到的链接中所讨论的。您的依赖项服务方法可能是我需要的解决方法,并且似乎适用于Android项目。实际上,在Android实现中,我可以使用“System.Console.WriteLine”或“Android.Util.Log.Debug”。它们都在VS输出窗口中生成输出。然而,我在UWP项目中找不到任何工作。在UWP中似乎找不到与“System.Console.WriteLine”等价的东西。如果在UWP实现中使用“System.Diagnostics.Debug.WriteLine”,则不会得到任何输出。有什么想法吗?@AntWaters我正在运行VS 2017 Professional,没有UWP的经验。你试过使用Trace.WriteLine吗?此外,Debug.WriteLine和Trace.WriteLine由项目属性中配置的内容控制。右键单击您的UWP项目->属性->构建->然后查找Define DEBUG constant(应检查调试配置,未检查发布配置),并查找Define TRACE constant(应检查调试和发布配置)。你说似乎没有一个等价物,这是否意味着它不会建造?谢谢@hvaughan3的建议,但没有进展。已经检查了这两个属性。是的,我的意思是,如果我尝试在UWP项目中使用Console.WriteLine,它将不会编译,intellisense也找不到任何要包含的引用。这同样适用于跟踪。相反,会找到Debug.WriteLine并进行编译,但不会生成任何输出。
IPlatformHelpers helper = DependencyService.Get<IPlatformHelpers>();

helper.WriteLine("Angry BLAH!");