viewdestroy template samples mono xamarin.ios xamarin.android xamarin mvvmcross

mono - template - mvvmcross xamarin forms



MvvmCross Mvx.Trace uso (2)

MvvmCross DebugTrace se enruta a través de una implementación IMvxTrace de IMvxTrace

Cada plataforma proporciona diferentes implementaciones de esto:

  • las plataformas de Windows usan rastreo de Debug (porque Trace sí no está disponible en todas las plataformas de Windows)
  • Android usa un registro dual de Debug y el log Android
  • iOS usa un registro dual de Debug y la Console iOS

Esto funcionó bien en las versiones anteriores de MvvmCross, especialmente cuando las personas se vinculaban directamente al código fuente de MvvmCross y, por lo tanto, podían vincularse directamente a los binarios MvvmCross de depuración o liberación.

Sin embargo ... porque la gente ahora usa cada vez más los Binarios de Nuget, en los que se compila Debug , entonces esto a menudo deja a la gente preguntando "¿Cómo se usa?"

La manera más fácil es que anule la inicialización de IMvxTrace en su clase de Setup .

Esto es fácil de hacer, por ejemplo:

protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); }

donde MyDebugTrace es algo así como:

public class MyDebugTrace : IMvxTrace { public void Trace(MvxTraceLevel level, string tag, Func<string> message) { Debug.WriteLine(tag + ":" + level + ":" + message()); } public void Trace(MvxTraceLevel level, string tag, string message) { Debug.WriteLine(tag + ":" + level + ":" + message); } public void Trace(MvxTraceLevel level, string tag, string message, params object[] args) { try { Debug.WriteLine(string.Format(tag + ":" + level + ":" + message, args)); } catch (FormatException) { Trace(MvxTraceLevel.Error, tag, "Exception during trace of {0} {1} {2}", level, message); } } }

Si desea incluir diferentes implementaciones para depurar / liberar; si desea activar / desactivar esto en tiempo de ejecución; si desea filtrar en MvxTraceLevel o tag ; o si desea utilizar un motor de registro de terceros, esto también debería ser fácil con C # simple en cada plataforma.

Estoy usando MvvmCross. En la biblioteca, veo el uso del método Mvx.Trace, pero no la salida a la consola / ventana de salida. ¿Cómo usarlo?

ps He establecido el compilador constante Trace = true

Gracias.


Acaba de resolver un problema en iOS con la solución actual proporcionada por Stuart.

Ejecutar una sesión de depuración en VS con MvxTrace utilizando Debug.WriteLine puede ser extremadamente lento dependiendo de cuán detallado sea el registro de su aplicación. Lo mismo para Trace.WriteLinte . Use Console.WriteLine lugar (como MvvmCross MvxDebugTrace hace) que no se ve afectado.

Consulta este elemento de error de Xamarin para obtener "más" detalles: https://bugzilla.xamarin.com/show_bug.cgi?id=13538#c4