dotnet-dsrouter

Tento článek se vztahuje na: ✔️ .NET 6.0 SDK a novější verze

Instalace

Pokud chcete nainstalovat nejnovější verzi dotnet-dsrouter balíčku NuGet, použijte příkaz dotnet tool install :

dotnet tool install --global dotnet-dsrouter

Synopse

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

Popis

dotnet-dsrouter Diagnostické nástroje, jako jsou dotnet-trace dotnet-counters aplikace .NET, které běží na Androidu, iOSu a tvOSu, bez ohledu na to, jestli běží jako emulátor, simulátor nebo samotné zařízení. Diagnostické nástroje používají k připojení a komunikaci s modulem runtime .NET místní komunikaci mezi procesy (IPC) (Pojmenované potrubí, Unix Domain Socket). Aplikace .NET spuštěné v prostředích v izolovaném prostoru (sandbox) v emulátorech, simulátorech a zařízeních potřebují alternativní způsoby komunikace. Vloží dotnet-dsrouter se mezi existující diagnostické nástroje a mobilní aplikace .NET a vytvoří místní reprezentaci aplikace. Diagnostické dotnet-dsrouter nástroje umožňují komunikovat se vzdáleným modulem runtime .NET, jako by byl spuštěný na místním počítači.

Komunikace mezi diagnostickými nástroji a dotnet-dsrouter používá stejný IPC (Pojmenovaný kanál, Unix Domain Socket) jako při připojování k místnímu modulu runtime .NET. dotnet-dsrouter využívá protokol TCP/IP ke komunikaci se vzdáleným modulem runtime .NET a podporuje několik různých scénářů připojení ke zpracování různých potřeb a požadavků používaných různými platformami. dotnet-dsrouter Implementuje také další podporu pro zjednodušení konfigurace připojení při spuštění v emulátoru, simulátoru a na fyzickém zařízení připojeném přes USB.

Poznámka:

dotnet-dsrouterje určen pro vývoj a testování a důrazně se doporučuje spouštět dotnet-dsrouter přes rozhraní zpětné smyčky (například 127.0.0.1, ). [::1] Funkce připojení a funkce předávání portů pro zpracování všech scénářů pomocí místního emulátoru, simulátoru nebo fyzického zařízení připojeného dotnet-dsrouter přes USB.

Upozorňující

Vazba koncového bodu serveru TCP na cokoli kromě rozhraní zpětné smyčky (localhostnebo[::1]) se nedoporučuje. 127.0.0.1 Všechna připojení ke koncovému bodu serveru TCP budou neověřená a nešifrovaná. dotnet-dsrouter je určen pro použití při vývoji a měl by být spuštěn pouze ve vývojových a testovacích prostředích.

Podrobné využití dotnet-dsrouter společně s mobilními aplikacemi je popsáno příslušnými sadami .NET SDK. Tento dokument bude obsahovat jenom několik příkladů, jak spouštět diagnostické nástroje pro aplikace .NET běžící na Androidu. Podrobné informace o konfiguraci a scénářích najdete v tématu Trasování diagnostiky.

Možnosti

  • -?|-h|--help

    Zobrazuje nápovědu k příkazovému řádku.

  • --version

    Zobrazí verzi dotnet-dsrouter nástroje.

Příkazy

Příkaz
dotnet-dsrouter client-server
dotnet-dsrouter server-server
dotnet-dsrouter server-client
dotnet-dsrouter client-client

dotnet-dsrouter client-server

Spusťte diagnostický server aplikace .NET, který směruje místní server IPC a vzdáleného klienta TCP. Směrovač se konfiguruje pomocí klienta IPC (připojení serveru IPC diagnostického nástroje) a serveru TCP/IP (přijetí modulu runtime klienta TCP).

Synopse

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

Možnosti

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

    Určuje adresu IPC diagnostického serveru diagnostického nástroje (--diagnostic-port argument). Směrovač se připojí k serveru IPC diagnostického nástroje při navazování nové trasy mezi modulem runtime a diagnostickým nástrojem.

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

    Určuje směrovač TCP/IP adresu pomocí formátu [host]:[port]. Směrovač může svázat jedno rozhraní (127.0.0.1, [::1], , 0.0.0.0[::], IPv4 adresa, IPv6 adresa, název hostitele) nebo všechna rozhraní (*). Spustí modul runtime pomocí DOTNET_DiagnosticPorts proměnné prostředí a připojí server TCP směrovače během spouštění.

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

    Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.

  • -v, --verbose <verbose>

    Povolí podrobné protokolování (ladění|trasování).

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

    Povolí přesměrování portů. Hodnoty jsou Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Před použitím této možnosti v Androidu nezapomeňte nastavit ANDROID_SDK_ROOT .

dotnet-dsrouter server-server

Spusťte server diagnostiky aplikací .NET, který směruje místního klienta IPC a vzdáleného klienta TCP. Směrovač se konfiguruje pomocí serveru IPC (připojení pomocí diagnostických nástrojů) a serveru TCP/IP (příjem klienta TCP modulu runtime).

Synopse

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

Možnosti

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

    Adresa IPC diagnostického serveru, která se má směrovat. Směrovač přijímá připojení IPC z diagnostických nástrojů, které vytvářejí novou trasu mezi modulem runtime a diagnostickým nástrojem. Pokud není zadaný, směrovač použije výchozí cestu diagnostického serveru IPC.

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

    Směrovač TCP/IP adresa ve formátu [host]:[port]. Směrovač může svázat jedno rozhraní (127.0.0.1, [::1], , 0.0.0.0[::], IPv4 adresa, IPv6 adresa, název hostitele) nebo všechna rozhraní (*). Spusťte modul runtime pomocí DOTNET_DiagnosticPorts proměnné prostředí a připojte server TCP směrovače během spouštění.

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

    Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.

  • -v, --verbose <verbose>

    Povolí podrobné protokolování (ladění|trasování).

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

    Povolí přesměrování portů. Hodnoty jsou Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Před použitím této možnosti v Androidu nezapomeňte nastavit ANDROID_SDK_ROOT .

dotnet-dsrouter server-client

Spusťte diagnostického serveru aplikace .NET směrování místního klienta IPC a vzdáleného serveru TCP. Směrovač se konfiguruje pomocí serveru IPC (připojení pomocí diagnostických nástrojů) a klienta TCP/IP (připojení k serveru TCP modulu runtime).

Synopse

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

Možnosti

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

    Adresa IPC diagnostického serveru, která se má směrovat. Směrovač přijímá připojení IPC z diagnostických nástrojů, které vytvářejí novou trasu mezi modulem runtime a diagnostickým nástrojem. Pokud není zadaný, směrovač použije výchozí cestu diagnostického serveru IPC.

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

    Runtime TCP/IP adresa ve formátu [host]:[port]. Směrovač se může připojit 127.0.0.1, , [::1]IPv4 adresa, adresa IPv6, adresy názvu hostitele. Spusťte modul runtime pomocí DOTNET_DiagnosticPorts proměnné prostředí k nastavení naslouchacího procesu.

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

    Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.

  • -v, --verbose <verbose>

    Povolí podrobné protokolování (ladění|trasování).

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

    Povolí přesměrování portů. Hodnoty jsou Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Před použitím této možnosti v Androidu nezapomeňte nastavit ANDROID_SDK_ROOT .

dotnet-dsrouter client-client

Spusťte server diagnostiky aplikací .NET, který směruje místní server IPC a vzdálený server TCP. Směrovač se konfiguruje pomocí klienta IPC (připojení serveru IPC diagnostického nástroje) a klienta TCP/IP (připojující se server TCP modulu runtime).

Synopse

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

Možnosti

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

    Adresa IPC diagnostického nástroje (--diagnostic-port argumentIPC) diagnostického nástroje Směrovač se připojí k serveru IPC diagnostického nástroje při vytváření nové trasy mezi modulem runtime a diagnostickým nástrojem.

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

    Runtime TCP/IP adresa ve formátu [host]:[port]. Směrovač se může připojit 127.0.0.1, , [::1]IPv4 adresa, adresa IPv6, adresy názvu hostitele. Spusťte modul runtime pomocí DOTNET_DiagnosticPorts proměnné prostředí k nastavení naslouchacího procesu.

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

    Směrovač se automaticky vypne, pokud se k němu před zadaným časovým limitem (sekundy) nepřipojí žádný modul runtime. Pokud není zadaný, směrovač neaktivuje automatické vypnutí.

  • -v, --verbose <verbose>

    Povolí podrobné protokolování (ladění|trasování).

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

    Povolí přesměrování portů. Hodnoty jsou Android nebo iOS pro TcpClient, a pouze Android pro TcpServer. Před použitím této možnosti v Androidu nezapomeňte nastavit ANDROID_SDK_ROOT .

Shromažďování trasování po spuštění pomocí dotnet-trace z aplikace .NET běžící na Androidu

Někdy může být užitečné shromáždit trasování aplikace od jejího spuštění. Následující kroky ilustrují proces, jak to udělat, když cílíte na aplikaci .NET běžící na Androidu. Vzhledem k tomu dotnet-dsrouter , že se používá přesměrování portů, funguje stejný scénář pro aplikace spuštěné v místním emulátoru a na fyzickém zařízení připojeném přes USB. Před použitím této možnosti dotnet-dsrouter nezapomeňte nastavit ANDROID_SDK_ROOT nebo nebudete moct najít adb potřebné k nastavení přesměrování portů.

  • Spusťte dotnet-dsrouter v režimu serveru:

    dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
    
  • Nastavení DOTNET_DiagnosticPorts proměnné prostředí pomocí AndroidEnvironment:

    Vytvořte soubor ve stejném adresáři jako soubor .csproj s použitím názvu, například app.env, přidejte do souboru DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend proměnné prostředí a do souboru přidejte následující ItemGroup položky:

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

    Je také možné nastavit DOTNET_DiagnosticPorts pomocí adb shell setprop:

    adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
    
  • Sestavte a spusťte aplikaci pomocí sady .NET Android SDK a povolte trasování předáním /p:AndroidEnableProfiler=true nástroje MSBuild. Vzhledem k tomu, že je aplikace nakonfigurovaná tak, aby se pozastavila při spuštění, připojí se zpět k naslouchacímu dotnet-dsrouter 127.0.0.1:9000 procesu TCP/IP a před obnovením provádění aplikace čeká na připojení diagnostických nástrojů.

  • Spusťte v režimu shromažďování, připojte dotnet-trace se k dotnet-dsrouter serveru IPC, ~/mylocalport:

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

dotnet-trace spustí relaci trasování a obnoví aplikaci, která se teď bude dál spouštět. Stream událostí začne proudit z mobilní aplikace prostřednictvím dotnet-dsrouter souboru dotnet-trace nettrace. Po dokončení trasování stiskněte Enter , abyste se ujistili, že relace trasování je správně zavřená a ujistěte se, že soubor nettrace obsahuje všechna potřebná data, než se aplikace zavře.

Je možné spouštět několik trasovacích relací proti stejné spuštěné aplikaci v průběhu času, nechat dotnet-dsrouter spuštěné a znovu spustit dotnet-trace , když je potřeba nová relace trasování.

dotnet-dsrouter pokud je aplikace nakonfigurovaná tak, aby se připojila pomocí adresy a portu, může zůstat spuštěná na pozadí a znovu ji použít.

dotnet-dsrouter je svázaný s jednou spuštěnou aplikací kdykoli. Pokud potřebujete současně trasovat několik různých aplikací, musí každá aplikace používat vlastní dotnet-dsrouter instanci tak, že nastaví jedinečnou dvojici IPC, TCP dotnet-dsrouter /IP adresy a nakonfiguruje různé instance aplikace, aby se připojila zpět ke své jedinečné dotnet-dsrouter instanci.

Pokud dotnet-dsrouter je spuštěný s cílením na --forward-port Android a adb server, emulátor nebo zařízení se restartuje, je potřeba restartovat všechny dotnet-dsrouter instance a obnovit pravidla předávání portů.

Až budete hotovi, dotnet-dsrouterstisknutím klávesY Q nebo Ctrl + C ukončete aplikaci.

Poznámka:

Při spuštění dotnet-dsrouter ve Windows bude pro svůj kanál IPC používat pojmenované kanály. Nahraďte ~/mylocalport parametrem mylocalport ve výše uvedených příkladech při spuštění ve Windows.

Poznámka:

Příkladem je port TCP/IP 9000. Můžete použít libovolný bezplatný port TCP/IP.

Poznámka:

Unix Domain Socket ~/mylocalport je jen příklad. Lze použít libovolnou bezplatnou cestu k souboru Unix Domain Socket.

Shromažďování trasování pomocí dotnet-trace z aplikace .NET spuštěné na Androidu

Pokud není potřeba shromažďovat trasování během spouštění aplikace, je možné spustit aplikaci v nosuspend režimu, což znamená, že modul runtime při spuštění neblokuje čekání na připojení diagnostických nástrojů před zahájením provádění. Většina výše popsaných scénářů platí i pro tento režim, stačí nahradit suspend proměnnou nosuspend DOTNET_DiagnosticPorts prostředí a spustit aplikaci v nosuspend režimu.

Viz také