narzędzie do analizy wydajności dotnet-trace

Ten artykuł dotyczy: ✔️ dotnet-trace 3.0.47001 i nowszych wersji

Instalowanie

Istnieją dwa sposoby pobierania i instalowania dotnet-traceprogramu :

Uwaga

Aby korzystać z dotnet-trace aplikacji x86, potrzebna jest odpowiednia wersja narzędzia x86.

Streszczenie

dotnet-trace [-h, --help] [--version] <command>

Opis

Narzędzie dotnet-trace :

  • To międzyplatformowe narzędzie .NET Core.
  • Umożliwia zbieranie śladów platformy .NET Core uruchomionego procesu bez natywnego profilera.
  • Jest oparty na EventPipe środowisku uruchomieniowym platformy .NET Core.
  • Zapewnia to samo środowisko w systemach Windows, Linux lub macOS.

Opcje

  • -h|--help

    Pokazuje pomoc wiersza polecenia.

  • --version

    Wyświetla wersję narzędzia dotnet-trace.

  • --duration

    Jak długo należy uruchomić ślad. --duration 00:00:00:05 uruchomi go przez 5 sekund.

Polecenia

Polecenie
dotnet-trace collect
dotnet-trace convert
dotnet-trace ps
dotnet-trace list-profiles
dotnet-trace report

dotnet-trace collect

Zbiera dane diagnostyczne z uruchomionego procesu lub uruchamia proces podrzędny i śledzi go (.NET 5 lub nowszy). Aby narzędzie uruchamiało proces podrzędny i śledziło go ze swojego uruchamiania, dołącz -- do polecenia collect.

Streszczenie

dotnet-trace collect [--buffersize <size>] [--clreventlevel <clreventlevel>] [--clrevents <clrevents>]
    [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [--duration dd:hh:mm:ss]
    [-n, --name <name>] [--diagnostic-port] [-o|--output <trace-file-path>] [-p|--process-id <pid>]
    [--profile <profile-name>] [--providers <list-of-comma-separated-providers>]
    [--show-child-io]
    [-- <command>] (for target applications running .NET 5 or later)

Opcje

  • --buffersize <size>

    Ustawia rozmiar buforu w pamięci w megabajtach. Domyślnie 256 MB.

    Uwaga

    Jeśli proces docelowy emituje zdarzenia szybciej niż można je zapisać na dysku, ten bufor może przepełnić się, a niektóre zdarzenia zostaną usunięte. Ten problem można rozwiązać, zwiększając rozmiar buforu lub zmniejszając liczbę zarejestrowanych zdarzeń.

  • --clreventlevel <clreventlevel>

    Czasownik zdarzeń CLR, które mają być emitowane.

  • --clrevents <clrevents>

    Lista słów kluczowych dostawcy środowiska uruchomieniowego CLR do włączenia rozdzielonych znakami + . Jest to proste mapowanie, które umożliwia określenie słów kluczowych zdarzeń za pośrednictwem aliasów ciągów, a nie ich wartości szesnastkowych. Na przykład dotnet-trace collect --providers Microsoft-Windows-DotNETRuntime:3:4 żąda tego samego zestawu zdarzeń co dotnet-trace collect --clrevents gc+gchandle --clreventlevel informational. W poniższej tabeli przedstawiono listę dostępnych słów kluczowych:

    Alias ciągu słowa kluczowego Wartość szesnastkowy słowa kluczowego
    gc 0x1
    gchandle 0x2
    fusion 0x4
    loader 0x8
    jit 0x10
    ngen 0x20
    startenumeration 0x40
    endenumeration 0x80
    security 0x400
    appdomainresourcemanagement 0x800
    jittracing 0x1000
    interop 0x2000
    contention 0x4000
    exception 0x8000
    threading 0x10000
    jittedmethodiltonativemap 0x20000
    overrideandsuppressngenevents 0x40000
    type 0x80000
    gcheapdump 0x100000
    gcsampledobjectallocationhigh 0x200000
    gcheapsurvivalandmovement 0x400000
    gcheapcollect 0x800000
    gcheapandtypenames 0x1000000
    gcsampledobjectallocationlow 0x2000000
    perftrack 0x20000000
    stack 0x40000000
    threadtransfer 0x80000000
    debugger 0x100000000
    monitoring 0x200000000
    codesymbols 0x400000000
    eventsource 0x800000000
    compilation 0x1000000000
    compilationdiagnostic 0x2000000000
    methoddiagnostic 0x4000000000
    typediagnostic 0x8000000000

    Więcej szczegółowych informacji na temat dostawcy środowiska uruchomieniowego platformy .NET można uzyskać w dokumentacji dotyczącej dostawcy środowiska uruchomieniowego platformy .NET.

  • --format {Chromium|NetTrace|Speedscope}

    Ustawia format wyjściowy konwersji pliku śledzenia. Wartość domyślna to NetTrace.

  • -n, --name <name>

    Nazwa procesu do zbierania śladu.

  • --diagnostic-port <path-to-port>

    Nazwa portu diagnostycznego do utworzenia. Zobacz Używanie portu diagnostycznego do zbierania śladu od uruchamiania aplikacji, aby dowiedzieć się, jak używać tej opcji do zbierania śladu od uruchamiania aplikacji.

  • --duration <time-to-run>

    Czas uruchomienia śledzenia. Użyj formatu dd:hh:mm:ss. Na przykład 00:00:00:05 uruchomi go przez 5 sekund.

  • -o|--output <trace-file-path>

    Ścieżka wyjściowa zebranych danych śledzenia. Jeśli nie zostanie określony, wartość domyślna trace.nettraceto .

  • -p|--process-id <PID>

    Identyfikator procesu do zbierania śladu.

  • --profile <profile-name>

    Nazwany wstępnie zdefiniowany zestaw konfiguracji dostawcy, który umożliwia zwięzłe określenie typowych scenariuszy śledzenia. Dostępne są następujące profile:

Profil Opis
cpu-sampling Przydatne do śledzenia użycia procesora CPU i ogólnych informacji o środowisku uruchomieniowym platformy .NET. Jest to opcja domyślna, jeśli nie określono żadnego profilu lub dostawców.
gc-verbose Śledzi kolekcje GC i przykłady alokacji obiektów.
gc-collect Śledzi kolekcje GC tylko przy bardzo niskim narzucie.
  • --providers <list-of-comma-separated-providers>

    Lista dostawców rozdzielanych EventPipe przecinkami, które mają być włączone. Dostawcy ci uzupełniają wszystkich dostawców sugerowanych przez usługę --profile <profile-name>. Jeśli istnieje niespójność dla określonego dostawcy, ta konfiguracja ma pierwszeństwo przed niejawną konfiguracją z profilu.

    Ta lista dostawców jest w formie:

    • Provider[,Provider]
    • Provider jest w postaci: KnownProviderName[:Flags[:Level][:KeyValueArgs]].
    • KeyValueArgs jest w postaci: [key1=value1][;key2=value2].

    Aby dowiedzieć się więcej na temat niektórych dobrze znanych dostawców na platformie .NET, zobacz Dobrze znani dostawcy zdarzeń.

  • -- <command> (w przypadku aplikacji docelowych z programem .NET 5 lub nowszym)

    Po parametrach konfiguracji kolekcji użytkownik może dołączyć -- następujące polecenie, aby uruchomić aplikację platformy .NET z co najmniej 5.0 środowiska uruchomieniowego. Może to być przydatne podczas diagnozowania problemów występujących na wczesnym etapie procesu, takich jak problem z wydajnością uruchamiania lub błędy modułu ładującego zestawów i bindera.

    Uwaga

    Użycie tej opcji monitoruje pierwszy proces platformy .NET 5, który komunikuje się z powrotem do narzędzia, co oznacza, że jeśli polecenie uruchamia wiele aplikacji .NET, będzie zbierać tylko pierwszą aplikację. W związku z tym zaleca się użycie tej opcji w aplikacjach samodzielnych lub przy użyciu dotnet exec <app.dll> opcji .

  • --show-child-io

    Przedstawia strumienie wejściowe i wyjściowe uruchomionego procesu podrzędnego w bieżącej konsoli.

Uwaga

  • Zatrzymanie śledzenia może zająć dużo czasu (do minut) dla dużych aplikacji. Środowisko uruchomieniowe musi wysłać za pośrednictwem pamięci podręcznej typu dla całego kodu zarządzanego przechwyconego w śladzie.
  • W systemach Linux i macOS to polecenie oczekuje aplikacji docelowej i dotnet-trace będzie współużytkować tę samą TMPDIR zmienną środowiskową. W przeciwnym razie upłynął limit czasu polecenia.
  • Aby zebrać ślad przy użyciu polecenia dotnet-trace, należy uruchomić go jako ten sam użytkownik, co użytkownik, który uruchamia proces docelowy lub jako główny. W przeciwnym razie narzędzie nie może nawiązać połączenia z procesem docelowym.
  • Jeśli zostanie wyświetlony komunikat o błędzie podobny do: [ERROR] System.ComponentModel.Win32Exception (299): A 32 bit processes cannot access modules of a 64 bit process., próbujesz użyć wersji, dotnet-trace która ma niezgodność bitów względem procesu docelowego. Pamiętaj, aby pobrać poprawną bitność narzędzia w linku instalacji .
  • Jeśli podczas uruchamiania dotnet-trace collectwystąpi nieobsługiwany wyjątek, spowoduje to niekompletne śledzenie. Jeśli znalezienie głównej przyczyny wyjątku jest twoim priorytetem, przejdź do sekcji Zbieranie zrzutów w przypadku awarii. W wyniku nieobsługiwanego wyjątku ślad jest obcięty, gdy środowisko uruchomieniowe zostanie zamknięte, aby zapobiec inne niepożądanemu zachowaniu, takie jak zawieszenie lub uszkodzenie danych. Mimo że ślad jest niekompletny, nadal można go otworzyć, aby zobaczyć, co się stało, co doprowadziło do awarii. Jednak brakuje informacji rundown (dzieje się to na końcu śledzenia), więc stosy mogą być nierozwiązane (w zależności od tego, którzy dostawcy zostali włączeni). Otwórz ślad, wykonując element PerfView z flagą /ContinueOnError w wierszu polecenia. Dzienniki będą również zawierać lokalizację, w ramach którego został wyzwolony wyjątek.

dotnet-trace convert

Konwertuje nettrace ślady na alternatywne formaty do użycia z alternatywnymi narzędziami do analizy śledzenia.

Streszczenie

dotnet-trace convert [<input-filename>] [--format <Chromium|NetTrace|Speedscope>] [-h|--help] [-o|--output <output-filename>]

Argumenty

  • <input-filename>

    Plik śledzenia danych wejściowych do przekonwertowania. Wartość domyślna to trace.nettrace.

Opcje

  • --format <Chromium|NetTrace|Speedscope>

    Ustawia format wyjściowy konwersji pliku śledzenia.

  • -o|--output <output-filename>

    Nazwa pliku wyjściowego. Zostanie dodane rozszerzenie formatu docelowego.

Uwaga

Konwertowanie nettrace plików na chromium pliki lub speedscope jest nieodwracalne. speedscope pliki i chromium nie mają wszystkich informacji niezbędnych do odtworzenia nettrace plików. Jednak convert polecenie zachowuje oryginalny nettrace plik, więc nie usuwaj tego pliku, jeśli planujesz otworzyć go w przyszłości.

dotnet-trace ps

Wyświetla listę procesów dotnet, z których można zbierać ślady. dotnet-trace 6.0.320703 i nowsze, wyświetla również argumenty wiersza polecenia, z którymi uruchomiono każdy proces, jeśli jest dostępny.

Streszczenie

dotnet-trace ps [-h|--help]

Przykład

Załóżmy, że uruchamiasz długotrwałą aplikację przy użyciu polecenia dotnet run --configuration Release. W innym oknie uruchomisz dotnet-trace ps polecenie . Dane wyjściowe, które zobaczysz, są następujące. Argumenty wiersza polecenia, jeśli są dostępne, są wyświetlane w dotnet-trace wersji 6.0.320703 lub nowszej.

> dotnet-trace ps
  
  21932 dotnet     C:\Program Files\dotnet\dotnet.exe   run --configuration Release
  36656 dotnet     C:\Program Files\dotnet\dotnet.exe

dotnet-trace list-profiles

Wyświetla listę wstępnie utworzonych profilów śledzenia z opisem dostawców i filtrów w każdym profilu.

Streszczenie

dotnet-trace list-profiles [-h|--help]

dotnet-trace report

Tworzy raport na podstawie wcześniej wygenerowanego śladu.

Streszczenie

dotnet-trace report [-h|--help] <tracefile> [command]

Argumenty

  • <tracefile>

    Ścieżka pliku do analizowanego śledzenia.

Polecenia

dotnet-trace report topN

Znajduje najlepsze metody N, które były na stosie wywołań najdłużej.

Streszczenie
dotnet-trace report <tracefile> topN [-n|--number <n>] [--inclusive] [-v|--verbose] [-h|--help]
Opcje
  • -n|--number <n>

Daje najlepsze metody N w stosie wywołań.

  • --inclusive

Dane wyjściowe pierwszych N metod na podstawie czasu inkluzywnego . Jeśli nie zostanie określony, czas wyłączny jest domyślnie używany.

  • -v|--verbose

Dane wyjściowe parametrów każdej metody w całości. Jeśli nie zostanie określony, parametry zostaną obcięte.

Zbieranie śledzenia za pomocą funkcji dotnet-trace

Aby zebrać ślady przy użyciu polecenia dotnet-trace:

  • Pobierz identyfikator procesu (PID) aplikacji .NET Core w celu zbierania śladów.

    • W systemie Windows można na przykład użyć Menedżera zadań lub tasklist polecenia.
    • Na przykład w ps systemie Linux polecenie .
    • dotnet-trace ps
  • Uruchom następujące polecenie:

    dotnet-trace collect --process-id <PID>
    

    Poprzednie polecenie generuje dane wyjściowe podobne do następujących:

    Press <Enter> to exit...
    Connecting to process: <Full-Path-To-Process-Being-Profiled>/dotnet.exe
    Collecting to file: <Full-Path-To-Trace>/trace.nettrace
    Session Id: <SessionId>
    Recording trace 721.025 (KB)
    
  • Zatrzymaj <Enter> zbieranie, naciskając klawisz . dotnet-trace spowoduje zakończenie rejestrowania zdarzeń do pliku trace.nettrace .

Uruchamianie aplikacji podrzędnej i zbieranie śladu ze swojego uruchamiania przy użyciu polecenia dotnet-trace

Ważne

Działa to tylko w przypadku aplikacji z programem .NET 5 lub nowszym.

Czasami może być przydatne zebranie śladu procesu od jego uruchomienia. W przypadku aplikacji z programem .NET 5 lub nowszym można to zrobić przy użyciu polecenia dotnet-trace.

Spowoduje to uruchomienie hello.exe polecenia i arg2arg1 jako argumenty wiersza polecenia i zebranie śladu z uruchomienia środowiska uruchomieniowego:

dotnet-trace collect -- hello.exe arg1 arg2

Poprzednie polecenie generuje dane wyjściowe podobne do następujących:

No profile or providers specified, defaulting to trace profile 'cpu-sampling'

Provider Name                           Keywords            Level               Enabled By
Microsoft-DotNETCore-SampleProfiler     0x0000F00000000000  Informational(4)    --profile
Microsoft-Windows-DotNETRuntime         0x00000014C14FCCBD  Informational(4)    --profile

Process        : E:\temp\gcperfsim\bin\Debug\net5.0\gcperfsim.exe
Output File    : E:\temp\gcperfsim\trace.nettrace


[00:00:00:05]   Recording trace 122.244  (KB)
Press <Enter> or <Ctrl+C> to exit...

Możesz zatrzymać zbieranie śladu, naciskając <Enter> klawisz lub <Ctrl + C> klawisz. Spowoduje to również zamknięcie hello.exepliku .

Uwaga

hello.exe Uruchomienie za pomocą polecenia dotnet-trace spowoduje przekierowanie danych wejściowych/wyjściowych i domyślnie nie będzie można z nią korzystać. Użyj przełącznika, aby wchodzić w interakcję --show-child-io z elementem stdin/stdout. Zamknięcie narzędzia za pomocą klawiszy CTRL+C lub SIGTERM umożliwi bezpieczne zakończenie zarówno narzędzia, jak i procesu podrzędnego. Jeśli proces podrzędny zakończy się przed narzędziem, narzędzie zakończy się również i ślad powinien być bezpiecznie wyświetlany.

Używanie portu diagnostycznego do zbierania śladu z uruchamiania aplikacji

Ważne

Działa to tylko w przypadku aplikacji z programem .NET 5 lub nowszym.

Port diagnostyczny to funkcja środowiska uruchomieniowego dodana na platformie .NET 5, która umożliwia rozpoczęcie śledzenia od uruchomienia aplikacji. W tym celu można użyć metody dotnet-tracezgodnie z dotnet-trace collect -- <command> opisem w powyższych przykładach lub użyć --diagnostic-port opcji .

Użycie dotnet-trace <collect|monitor> -- <command> do uruchamiania aplikacji jako procesu podrzędnego jest najprostszym sposobem szybkiego śledzenia aplikacji z poziomu jej uruchamiania.

Jeśli jednak chcesz uzyskać bardziej precyzyjną kontrolę nad okresem istnienia śledzonej aplikacji (na przykład monitorować aplikację tylko przez pierwsze 10 minut i kontynuować wykonywanie) lub jeśli konieczne jest interakcja z aplikacją przy użyciu interfejsu wiersza polecenia, użycie --diagnostic-port opcji pozwala kontrolować zarówno monitorowaną dotnet-traceaplikację docelową, jak i .

  1. Poniższe polecenie powoduje dotnet-trace utworzenie gniazda diagnostycznego o nazwie myport.sock i oczekiwanie na połączenie.

    dotnet-trace collect --diagnostic-port myport.sock
    

    Dane wyjściowe:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=/home/user/myport.sock
    
  2. W oddzielnej konsoli uruchom aplikację docelową ze zmienną środowiskową DOTNET_DiagnosticPorts ustawioną na wartość w danych wyjściowych dotnet-trace .

    export DOTNET_DiagnosticPorts=/home/user/myport.sock
    ./my-dotnet-app arg1 arg2
    

    Powinno to następnie włączyć funkcję dotnet-trace śledzenia my-dotnet-app:

    Waiting for connection on myport.sock
    Start an application with the following environment variable: DOTNET_DiagnosticPorts=myport.sock
    Starting a counter session. Press Q to quit.
    

    Ważne

    Uruchomienie aplikacji dotnet run przy użyciu może być problematyczne, ponieważ interfejs wiersza polecenia dotnet może spowodować, że wiele procesów podrzędnych, które nie są twoją aplikacją, i mogą łączyć się dotnet-trace z aplikacją przed aplikacją, pozostawiając aplikację do zawieszenia w czasie wykonywania. Zaleca się bezpośrednie użycie samodzielnej wersji aplikacji lub użycie dotnet exec jej do uruchamiania aplikacji.

Wyświetlanie śladu przechwyconego z elementu dotnet-trace

W systemie Windows można wyświetlać pliki .nettrace w programie Visual Studio lub PerfView na potrzeby analizy.

W systemie Linux możesz wyświetlić ślad, zmieniając format danych wyjściowych na dotnet-tracespeedscope. Zmień format pliku wyjściowego -f|--format przy użyciu opcji . Możesz wybrać między nettrace (opcja domyślna) i speedscope. Opcja -f speedscope spowoduje dotnet-trace utworzenie speedscope pliku. Speedscope pliki można otworzyć pod adresem https://www.speedscope.app.

W przypadku śladów zebranych na platformach innych niż Windows można również przenieść plik śledzenia na maszynę z systemem Windows i wyświetlić go w programie Visual Studio lub PerfView.

Uwaga

Środowisko uruchomieniowe platformy .NET Core generuje ślady w nettrace formacie. Ślady są konwertowane na speedscope (jeśli określono) po zakończeniu śledzenia. Ponieważ niektóre konwersje mogą spowodować utratę danych, oryginalny nettrace plik jest zachowywany obok przekonwertowanego pliku.

Używanie funkcji dotnet-trace do zbierania wartości liczników w czasie

dotnet-trace Cna:

  • Służy EventCounter do podstawowego monitorowania kondycji w środowiskach wrażliwych na wydajność. Na przykład w środowisku produkcyjnym.
  • Zbierz ślady, aby nie trzeba było ich wyświetlać w czasie rzeczywistym.

Aby na przykład zebrać wartości licznika wydajności środowiska uruchomieniowego, użyj następującego polecenia:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1

Poprzednie polecenie informuje liczniki środowiska uruchomieniowego do raportowania raz na sekundę na potrzeby uproszczonego monitorowania kondycji. Zamiana EventCounterIntervalSec=1 na wyższą wartość (na przykład 60) umożliwia zbieranie mniejszego śladu o mniejszej szczegółowości danych licznika.

Następujące polecenie zmniejsza obciążenie i rozmiar śledzenia więcej niż poprzedni:

dotnet-trace collect --process-id <PID> --providers System.Runtime:0:1:EventCounterIntervalSec=1,Microsoft-Windows-DotNETRuntime:0:1,Microsoft-DotNETCore-SampleProfiler:0:1

Powyższe polecenie wyłącza zdarzenia środowiska uruchomieniowego i profilera zarządzanego stosu.

Użyj pliku rsp, aby uniknąć wpisywania długich poleceń

Możesz uruchomić polecenie dotnet-trace za pomocą pliku zawierającego .rsp argumenty do przekazania. Może to być przydatne podczas włączania dostawców, którzy oczekują długich argumentów lub w przypadku używania środowiska powłoki, które usuwa znaki.

Na przykład następujący dostawca może być uciążliwy do wpisywania za każdym razem, gdy chcesz śledzić:

dotnet-trace collect --providers Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

Ponadto poprzedni przykład zawiera się " jako część argumentu. Ponieważ cudzysłowy nie są obsługiwane równie przez każdą powłokę, mogą wystąpić różne problemy podczas korzystania z różnych powłok. Na przykład polecenie do wprowadzenia w zsh pliku różni się od polecenia w pliku cmd.

Zamiast wpisywać to za każdym razem, możesz zapisać następujący tekst w pliku o nazwie myprofile.rsp.

--providers
Microsoft-Diagnostics-DiagnosticSource:0x3:5:FilterAndPayloadSpecs="SqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandBefore@Activity1Start:-Command;Command.CommandText;ConnectionId;Operation;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nSqlClientDiagnosticListener/System.Data.SqlClient.WriteCommandAfter@Activity1Stop:\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuting@Activity2Start:-Command;Command.CommandText;ConnectionId;IsAsync;Command.Connection.ClientConnectionId;Command.Connection.ServerVersion;Command.CommandTimeout;Command.CommandType;Command.Connection.ConnectionString;Command.Connection.Database;Command.Connection.DataSource;Command.Connection.PacketSize\r\nMicrosoft.EntityFrameworkCore/Microsoft.EntityFrameworkCore.Database.Command.CommandExecuted@Activity2Stop:",OtherProvider,AnotherProvider

Po zapisaniu myprofile.rsppolecenia możesz uruchomić dotnet-trace tę konfigurację przy użyciu następującego polecenia:

dotnet-trace @myprofile.rsp

Zobacz też