Delen via


dotnet-dsrouter

Dit artikel is van toepassing op: ✔️ .NET 6.0 SDK en latere versies

Installeren

Als u de nieuwste versie van het NuGet-pakket wilt installeren, gebruikt u de installatieopdracht van het dotnet-dsrouter dotnet-hulpprogramma:

dotnet tool install --global dotnet-dsrouter

Samenvatting

dotnet-dsrouter [-?, -h, --help] [--version] <command>

Beschrijving

Hiermee dotnet-dsrouter worden diagnostische hulpprogramma's, zoals dotnet-trace en dotnet-counters met .NET-toepassingen die worden uitgevoerd op Android, iOS en tvOS, verbonden, ongeacht of ze worden uitgevoerd als emulator, simulator of op het apparaat zelf. Diagnostische hulpprogramma's maken gebruik van lokale communicatie tussen processen (IPC) (Named Pipe, Unix Domain Socket) om verbinding te maken en te communiceren met een .NET-runtime. .NET-toepassingen die worden uitgevoerd in sandboxomgevingen op emulators, simulators en apparaten, hebben alternatieve manieren nodig om te communiceren. De dotnet-dsrouter injecteert zichzelf tussen bestaande diagnostische hulpprogramma's en mobiele .NET-toepassingen en maakt een lokale weergave van de toepassing. Hiermee dotnet-dsrouter kunnen diagnostische hulpprogramma's communiceren met een externe .NET-runtime alsof deze op de lokale computer wordt uitgevoerd.

De communicatie tussen diagnostische hulpprogramma's en dotnet-dsrouter maakt gebruik van dezelfde IPC (Named Pipe, Unix Domain Socket) die wordt gebruikt bij het maken van verbinding met een lokale .NET-runtime. dotnet-dsrouter maakt gebruik van TCP/IP in de communicatie met externe .NET-runtime en ondersteunt verschillende connectiviteitsscenario's om verschillende behoeften en vereisten te verwerken die door verschillende platforms worden gebruikt. dotnet-dsrouter implementeert ook aanvullende ondersteuning om de connectiviteitsconfiguratie te vereenvoudigen bij het uitvoeren in emulator, simulator en op fysiek apparaat dat via USB is aangesloten.

Notitie

dotnet-dsrouter is bedoeld voor ontwikkeling en testen en het wordt ten zeerste aanbevolen om dotnet-dsrouter over loopback-interface (bijvoorbeeld 127.0.0.1, [::1]). De connectiviteitsfuncties en mogelijkheden voor het doorsturen van poorten verwerken alle scenario's met behulp van dotnet-dsrouter lokale emulator, simulator of fysiek apparaat dat is verbonden via USB.

Waarschuwing

Het is niet raadzaam om TCP-servereindpunt aan iets te binden, behalve de loopback-interface (localhost127.0.0.1of [::1]). Verbindingen naar TCP-servereindpunt worden niet-geverifieerd en niet-versleuteld. dotnet-dsrouter is bedoeld voor ontwikkelingsgebruik en mag alleen worden uitgevoerd in ontwikkel- en testomgevingen.

Gedetailleerd gebruik van samen met mobiele toepassingen is een overzicht van dotnet-dsrouter de respectieve .NET SDK's. Dit document bevat slechts enkele voorbeelden van het uitvoeren van diagnostische hulpprogramma's voor .NET-toepassingen die worden uitgevoerd op Android. Zie Diagnostische tracering voor uitgebreide informatie over configuratie en scenario's.

Opties

  • -?|-h|--help

    Toont opdrachtregelhulp.

  • --version

    Geeft de versie van het dotnet-dsrouter hulpprogramma weer.

Opdracht

Opdracht
dotnet-dsrouter-client-server
dotnet-dsrouter server-server
dotnet-dsrouter server-client
dotnet-dsrouter client-client

dotnet-dsrouter-client-server

Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-server en externe TCP-client. De router wordt geconfigureerd met behulp van een IPC-client (verbinding maken met de IPC-server van het diagnostisch hulpprogramma) en een TCP/IP-server (runtime-TCP-client accepteren).

Samenvatting

dotnet-dsrouter client-server
    [-ipcc|--ipc-client <ipcClient>]
    [-tcps|--tcp-server <tcpServer>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opties

  • -ipcc, --ipc-client <ipcClient>

    Hiermee geeft u het IPC-adres (--diagnostic-port argument) van de diagnostische hulpprogrammadiagnoseserver op. Router maakt verbinding met de IPC-server van het diagnostisch hulpprogramma bij het tot stand brengen van een nieuwe route tussen de runtime en het diagnostische hulpprogramma.

  • -tcps, --tcp-server <tcpServer>

    Hiermee geeft u het TCP/IP-adres van de router met behulp van indeling [host]:[port]. Router kan één (127.0.0.1, [::1], 0.0.0.0, , [::]IPv4-adres, IPv6-adres, hostnaam) of alle (*) interfaces binden. Start de runtime met behulp van de DOTNET_DiagnosticPorts omgevingsvariabele en verbindt de router TCP-server tijdens het opstarten.

  • -rt, --runtime-timeout <runtimeTimeout>

    Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.

  • -v, --verbose <verbose>

    Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).

  • -fp, --forward-port <forwardPort>

    Hiermee schakelt u port forwarding in. De waarden zijn Android of iOS voor TcpClient, en alleen Android voor TcpServer. Zorg ervoor dat u deze optie instelt ANDROID_SDK_ROOT voordat u deze optie op Android gebruikt.

dotnet-dsrouter server-server

Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-client en externe TCP-client. De router wordt geconfigureerd met behulp van een IPC-server (verbinding maken met diagnostische hulpprogramma's) en een TCP/IP-server (runtime-TCP-client accepteren).

Samenvatting

dotnet-dsrouter server-server
    [-ipcs|--ipc-server <ipcServer>]
    [-tcps|--tcp-server <tcpServer>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opties

  • -ipcs, --ipc-server <ipcServer>

    Het IPC-adres van de diagnostische server om te routeren. Router accepteert IPC-verbindingen van diagnostische hulpprogramma's voor het tot stand brengen van een nieuwe route tussen runtime en diagnostisch hulpprogramma. Als dit niet is opgegeven, gebruikt de router het standaardpad voor diagnostische IPC-servers.

  • -tcps, --tcp-server <tcpServer>

    Het TCP/IP-adres van de router in de indeling [host]:[port]. Router kan één (127.0.0.1, [::1], 0.0.0.0, , [::]IPv4-adres, IPv6-adres, hostnaam) of alle (*) interfaces binden. Start runtime met behulp van DOTNET_DiagnosticPorts de omgevingsvariabele en verbind de ROUTER TCP-server tijdens het opstarten.

  • -rt, --runtime-timeout <runtimeTimeout>

    Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.

  • -v, --verbose <verbose>

    Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).

  • -fp, --forward-port <forwardPort>

    Hiermee schakelt u port forwarding in. De waarden zijn Android of iOS voor TcpClient, en alleen Android voor TcpServer. Zorg ervoor dat u deze optie instelt ANDROID_SDK_ROOT voordat u deze optie op Android gebruikt.

dotnet-dsrouter server-client

Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-client en externe TCP-server. De router wordt geconfigureerd met behulp van een IPC-server (verbinding maken met diagnostische hulpprogramma's) en een TCP/IP-client (verbinding maken met runtime-TCP-server).

Samenvatting

dotnet-dsrouter server-client
    [-ipcs|--ipc-server <ipcServer>]
    [-tcpc|--tcp-client <tcpClient>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opties

  • -ipcs, --ipc-server <ipcServer>

    Het IPC-adres van de diagnostische server om te routeren. Router accepteert IPC-verbindingen van diagnostische hulpprogramma's voor het tot stand brengen van een nieuwe route tussen de runtime en het diagnostische hulpprogramma. Als dit niet is opgegeven, gebruikt de router het standaardpad voor diagnostische IPC-servers.

  • -tcpc, --tcp-client <tcpClient>

    Het TCP/IP-adres van de runtime in de indeling [host]:[port]. Router kan verbinding maken 127.0.0.1, [::1]IPv4-adres, IPv6-adres, hostnaamadressen. Start de runtime met behulp van DOTNET_DiagnosticPorts de omgevingsvariabele om de listener in te stellen.

  • -rt, --runtime-timeout <runtimeTimeout>

    Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.

  • -v, --verbose <verbose>

    Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).

  • -fp, --forward-port <forwardPort>

    Hiermee schakelt u port forwarding in. De waarden zijn Android of iOS voor TcpClient, en alleen Android voor TcpServer. Zorg ervoor dat u deze optie instelt ANDROID_SDK_ROOT voordat u deze optie op Android gebruikt.

dotnet-dsrouter client-client

Start een .NET-toepassingsdiagnoseserver voor routering van lokale IPC-server en externe TCP-server. De router wordt geconfigureerd met behulp van een IPC-client (verbinding maken met de IPC-server van het diagnostisch hulpprogramma) en een TCP/IP-client (verbinding maken met runtime-TCP-server).

Samenvatting

dotnet-dsrouter client-client
    [-ipcc|--ipc-client <ipcClient>]
    [-tcpc|--tcp-client <tcpClient>]
    [-rt|--runtime-timeout <timeout>]
    [-v|--verbose <level>]
    [-fp|--forward-port <platform>]

Opties

  • -ipcc, --ipc-client <ipcClient>

    Het IPC-adres van de diagnostische hulpprogrammadiagnoseserver (--diagnostic-port argument). Router maakt verbinding met de IPC-server van het diagnostisch hulpprogramma bij het tot stand brengen van een nieuwe route tussen runtime en diagnostisch hulpprogramma.

  • -tcpc, --tcp-client <tcpClient>

    Het TCP/IP-adres van de runtime in de indeling [host]:[port]. Router kan verbinding maken 127.0.0.1, [::1]IPv4-adres, IPv6-adres, hostnaamadressen. Start de runtime met behulp van DOTNET_DiagnosticPorts de omgevingsvariabele om listener in te stellen.

  • -rt, --runtime-timeout <runtimeTimeout>

    Sluit de router automatisch af als er vóór de opgegeven time-out (seconden) geen runtime verbinding mee maakt. Als dit niet is opgegeven, activeert de router geen automatisch afsluiten.

  • -v, --verbose <verbose>

    Schakelt uitgebreide logboekregistratie in (foutopsporing|trace).

  • -fp, --forward-port <forwardPort>

    Hiermee schakelt u port forwarding in. De waarden zijn Android of iOS voor TcpClient, en alleen Android voor TcpServer. Zorg ervoor dat u deze optie instelt ANDROID_SDK_ROOT voordat u deze optie op Android gebruikt.

Een opstarttracering verzamelen met dotnet-trace vanuit een .NET-toepassing die wordt uitgevoerd op Android

Soms kan het handig zijn om een tracering van een toepassing te verzamelen vanaf het opstarten. In de volgende stappen ziet u hoe u dit doet op basis van een .NET-toepassing die wordt uitgevoerd op Android. Omdat dotnet-dsrouter deze wordt uitgevoerd met behulp van port forwarding, werkt hetzelfde scenario voor toepassingen die worden uitgevoerd op een lokale emulator en op een fysiek apparaat dat via USB is gekoppeld. Zorg ervoor dat u dit instelt ANDROID_SDK_ROOT voordat u deze optie gebruikt of dotnet-dsrouter dat u niet kunt vinden adb dat het doorsturen via poort moet worden ingesteld.

  • Start dotnet-dsrouter in server-servermodus:

    dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
    
  • Omgevingsvariabele instellen DOTNET_DiagnosticPorts met behulp van AndroidEnvironment:

    Maak een bestand in dezelfde map als de .csproj met behulp van een naam zoalsapp.env, voeg omgevingsvariabelen toe aan het bestand DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend en voeg het volgende ItemGroup toe aan .csproj:

    <ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'">
      <AndroidEnvironment Include="app.env" />
    </ItemGroup>
    

    Het is ook mogelijk om het volgende in te stellenDOTNET_DiagnosticPorts:adb shell setprop

    adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
    
  • Bouw en start de toepassing met behulp van .NET Android SDK en schakel tracering in door te geven /p:AndroidEnableProfiler=true aan MSBuild. Omdat de app is geconfigureerd om te onderbreken bij het opstarten, wordt er weer verbinding gemaakt met de TCP/IP-listener die wordt uitgevoerd 127.0.0.1:9000 en wacht u tot diagnostische hulpprogramma's verbinding maken voordat de uitvoering van de dotnet-dsrouter toepassing wordt hervat.

  • Start dotnet-trace in de verzamelmodus, maak verbinding met dotnet-dsrouter de IPC-server, ~/mylocalport:

      dotnet-trace collect --diagnostic-port ~/mylocalport,connect
    

dotnet-trace start een traceringssessie en hervat de toepassing die nu wordt uitgevoerd. Er wordt een stroom gebeurtenissen vanuit de mobiele toepassing naar dotnet-dsrouter het dotnet-trace nettrace-bestand gestroomd. Wanneer u klaar bent met traceren, drukt u op Enter om te controleren of de traceringssessie correct is gesloten, zodat het nettrace-bestand alle benodigde gegevens bevat voordat de toepassing wordt gesloten.

Het is mogelijk om verschillende traceringssessies uit te voeren op dezelfde actieve toepassing gedurende een bepaalde periode, het dotnet-dsrouter uitvoeren en opnieuw uitvoeren dotnet-trace wanneer er een nieuwe traceringssessie nodig is.

dotnet-dsrouter kan op de achtergrond worden uitgevoerd en opnieuw worden gebruikt als een toepassing is geconfigureerd om verbinding te maken met behulp van het adres en de poort.

dotnet-dsrouter is op elk gewenst moment gekoppeld aan één actieve toepassing. Als er tegelijkertijd verschillende toepassingen moeten worden getraceerd, moet elke toepassing een eigen dotnet-dsrouter exemplaar gebruiken door een uniek IPC-, TCP/IP-adrespaar in dotnet-dsrouter te stellen en verschillende toepassingsexemplaren te configureren om verbinding te maken met het unieke dotnet-dsrouter exemplaar.

Als dotnet-dsrouter deze wordt uitgevoerd met --forward-port het doel android en adb de server, emulator of het apparaat opnieuw wordt opgestart, moeten alle exemplaren opnieuw worden opgestart en moeten ook dotnet-dsrouter regels voor het doorsturen van poorten worden hersteld.

Wanneer u klaar bent met het gebruikdotnet-dsrouter, drukt u op Q of Ctrl + C om de toepassing af te sluiten.

Notitie

Bij uitvoering dotnet-dsrouter in Windows wordt Named Pipes gebruikt voor het IPC-kanaal. Vervang ~/mylocalport door mylocalport in bovenstaande voorbeelden bij uitvoering in Windows.

Notitie

TCP/IP-poort 9000 is slechts een voorbeeld. Elke gratis TCP/IP-poort kan worden gebruikt.

Notitie

Unix Domain Socket ~/mylocalport is slechts een voorbeeld. Elk gratis Unix Domain Socket-bestandspad kan worden gebruikt.

Een tracering verzamelen met dotnet-trace vanuit een .NET-toepassing die wordt uitgevoerd op Android

Als er geen tracering hoeft te worden verzameld tijdens het opstarten van de toepassing, is het mogelijk om de toepassing in nosuspend de modus te starten, wat betekent dat runtime bij het opstarten niet blokkeert totdat diagnostische hulpprogramma's verbinding maken voordat de uitvoering wordt hervat. De meeste hierboven beschreven scenario's zijn ook van toepassing op deze modus. Vervang suspend nosuspend deze door in DOTNET_DiagnosticPorts de omgevingsvariabele om de toepassing in nosuspend de modus te starten.

Zie ook