Używam MvvmCross. W bibliotece widzę użycie metody Mvx.Trace, ale brak danych wyjściowych do okna konsoli/wyjścia. Jak z niego korzystać?Używanie MvvmCross Mvx.Trace
p.s. Ustawiłem stałą kompilatora Trace = true
Dzięki.
Używam MvvmCross. W bibliotece widzę użycie metody Mvx.Trace, ale brak danych wyjściowych do okna konsoli/wyjścia. Jak z niego korzystać?Używanie MvvmCross Mvx.Trace
p.s. Ustawiłem stałą kompilatora Trace = true
Dzięki.
MvvmCross DebugTrace wszystko jest kierowane za pośrednictwem singleton realizacji IMvxTrace
Każda platforma dostarcza różne implementacje to:
Debug
trace (bo sama Trace
nie jest dostępny na wszystkich oknach Platformy)Debug
, jak i Androida log
Debug
i iOS Console
To działało dobrze we wcześniejszych wersjach MvvmCross, zwłaszcza tam, gdzie ludzie połączonych bezpośrednio do kodu źródłowego MvvmCross a więc może wiązać bezpośrednio albo do debugowania lub zwolnij MvvmCross pliki binarne.
Jednak ... ponieważ ludzie coraz częściej używają wersji Binarni z Nuget - w której oczywiście jest kompilowane Debug
, to często pozostawia ludzi pytających "Jak z tego korzystać?"
Najprostszym sposobem jest zastąpienie inicjalizacji IMvxTrace w klasie Setup
.
Łatwo to zrobić - np .:
protected override IMvxTrace CreateDebugTrace() { return new MyDebugTrace(); }
gdzie MyDebugTrace
jest coś takiego:
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);
}
}
}
Jeśli chciał zawierać różne implementacje dla debugowania/uwolnienia; jeśli chcesz włączyć/wyłączyć to w czasie wykonywania; jeśli chcesz filtrować na MvxTraceLevel
lub tag
; lub jeśli chcesz użyć mechanizmu logowania innej firmy, powinno to być łatwe do zrobienia za pomocą prostego C# na każdej platformie.
Po prostu trafienie na systemie iOS z bieżącym rozwiązaniem dostarczonym przez Stuarta.
Uruchamianie sesji debugowania w VS przy użyciu MvxTrace przy użyciu Debug.WriteLine
może być bardzo powolne w zależności od tego, jak obszerna jest rejestracja aplikacji. To samo dla Trace.WriteLinte
. Zamiast tego należy użyć Console.WriteLine
(ponieważ robi to MvvmCross MvxDebugTrace
), co nie ma wpływu.
Zobacz tę pozycję bug Xamarin dla "bardziej" szczegóły: https://bugzilla.xamarin.com/show_bug.cgi?id=13538#c4
Jak zwykle: szybko i szczegółową odpowiedź od Stuart. Dzięki! –
Xamarin Android: Zamiast patrzenia na standardowe okno wyjściowe VS przejdź do funkcji View \ Other Windows \ Android Device Logging. Możesz filtrować według mvx, aby zobaczyć tylko ślady aplikacji. http: //docs.xamarin.com/guides/android/deployment, _testing, _and_metrics/android_debug_log –