dotnet-dsrouter
Эта статья относится к: ✔️ пакету SDK для .NET 6.0 и более поздних версий
Установка
Чтобы установить последнюю версию dotnet-dsrouter
, используйте команду dotnet tool install.
dotnet tool install --global dotnet-dsrouter
Краткие сведения
dotnet-dsrouter [-?, -h, --help] [--version] <command>
Description
dotnet-dsrouter
подключает средства диагностики, такие как dotnet-trace
и dotnet-counters
к приложениям .NET, работающим в Android, iOS и tvOS в качестве эмулятора, симулятора или на самом устройстве. Средства диагностики выполняют локальный внутрипроцессный обмен данными (IPC) (именованный канал, сокет домена Unix) для подключения к среде выполнения .NET и взаимодействия с ней. Приложениям .NET, работающим в изолированных средах в эмуляторах, симуляторах и устройствах, требуются альтернативные способы обмена данными.
dotnet-dsrouter
внедряется между существующими средствами диагностики и мобильными приложениями .NET для создания локального представления приложения.
dotnet-dsrouter
позволяет средствам диагностики взаимодействовать с удаленной средой выполнения .NET, как при выполнении на локальном компьютере.
Обмен данными между средствами диагностики и dotnet-dsrouter
осуществляется с помощью того же процесса IPC (именованный канал, сокет домена Unix), который используется при подключении к локальной среде выполнения .NET.
dotnet-dsrouter
использует TCP/IP для взаимодействия с удаленной средой выполнения .NET и поддерживает несколько разных сценариев подключения с учетом разных требований разных платформ.
dotnet-dsrouter
также реализует дополнительную поддержку, чтобы упросить настройку подключения при работе в эмуляторе, симуляторе и на физическом устройстве с подключением через USB.
Примечание.
dotnet-dsrouter
используется для разработки и тестирования, поэтому настоятельно рекомендуется запускать dotnet-dsrouter
через интерфейс с возвратом цикла (например, 127.0.0.1
, [::1]
). Функции подключения и возможности переадресации портов dotnet-dsrouter
поддерживают все сценарии с использованием локального эмулятора, симулятора или физического устройства с подключением через USB.
Предупреждение
Выполнять привязку конечной точки TCP-сервера к чему-либо, кроме интерфейса с возвратом цикла (localhost
, 127.0.0.1
или [::1]
), не рекомендуется. Любые подключения к конечной точке TCP-сервера не будут проходить проверку подлинности и не будут шифроваться.
dotnet-dsrouter
используется в разработке с запуском только в средах разработки и тестирования.
Особенности использования dotnet-dsrouter
вместе с мобильными приложениями определяются в документации по соответствующим пакетам SDK для .NET. Этот документ будет включать только несколько примеров того, как запускать средства диагностики для приложения .NET, работающего в Android. Подробные сведения о конфигурации и сценариях см. в статье, посвященной диагностической трассировке.
Параметры
-?|-h|--help
Отображение справки в командной строке.
--version
Отображает версию программы
dotnet-dsrouter
.
Команды
Команда |
---|
dotnet-dsrouter client-server |
dotnet-dsrouter server-server |
dotnet-dsrouter server-client |
dotnet-dsrouter client-client |
dotnet-dsrouter client-server
Запустите сервер диагностики приложения .NET с маршрутизацией локального IPC-сервера и удаленного TCP-клиента. Маршрутизатор настраивается с использованием IPC-клиента (с подключением IPC-сервера средства диагностики) и сервера TCP/IP (с приемом TCP-клиента среды выполнения).
Краткие сведения
dotnet-dsrouter client-server
[-ipcc|--ipc-client <ipcClient>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Параметры
-ipcc, --ipc-client <ipcClient>
Указывает средство диагностики диагностика адрес IPC сервера (
--diagnostic-port
аргумент). Маршрутизатор подключается к серверу IPC средства диагностики при установке нового маршрута между средой выполнения и средством диагностики.-tcps, --tcp-server <tcpServer>
Указывает TCP/IP-адрес маршрутизатора с помощью формата
[host]:[port]
. Маршрутизатор может привязать один (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4-адрес, IPv6-адрес, имя хоста) или все (*) интерфейсы. Запускает среду выполнения с помощью переменнойDOTNET_DiagnosticPorts
среды и подключает TCP-сервер маршрутизатора во время запуска.-rt, --runtime-timeout <runtimeTimeout>
Автоматически завершает работу маршрутизатора, если среда выполнения не подключается к ней до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>
Включает подробное ведение журнала (отладка|trace).
-fp, --forward-port <forwardPort>
Включает переадресацию портов. Значения имеют
Android
значение илиiOS
TcpClient
Android
только дляTcpServer
. Обязательно задайтеANDROID_SDK_ROOT
перед использованием этого параметра в Android.
dotnet-dsrouter server-server
Запустите сервер диагностики приложений .NET с маршрутизацией локального IPC-клиента и удаленного TCP-клиента. Маршрутизатор настраивается с использованием IPC-сервера (с подключением к средствам диагностики) и сервера TCP/IP (с приемом TCP-клиента среды выполнения).
Краткие сведения
dotnet-dsrouter server-server
[-ipcs|--ipc-server <ipcServer>]
[-tcps|--tcp-server <tcpServer>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Параметры
-ipcs, --ipc-server <ipcServer>
Адрес IPC сервера диагностика для маршрутизации. Маршрутизатор принимает IPC-подключения от средств диагностики с установкой нового маршрута между средой выполнения и средством диагностики. Если это не указано, маршрутизатор будет использовать путь к серверу по умолчанию диагностика IPC.
-tcps, --tcp-server <tcpServer>
TCP/IP-адрес маршрутизатора в формате
[host]:[port]
. Маршрутизатор может привязать один (127.0.0.1
,[::1]
,0.0.0.0
,[::]
, IPv4-адрес, IPv6-адрес, имя хоста) или все (*) интерфейсы. Запустите среду выполнения, используя переменную средыDOTNET_DiagnosticPorts
с подключением TCP-сервера маршрутизатора во время запуска.-rt, --runtime-timeout <runtimeTimeout>
Автоматически завершает работу маршрутизатора, если среда выполнения не подключается к ней до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>
Включает подробное ведение журнала (отладка|trace).
-fp, --forward-port <forwardPort>
Включает переадресацию портов. Значения имеют
Android
значение илиiOS
TcpClient
Android
только дляTcpServer
. Обязательно задайтеANDROID_SDK_ROOT
перед использованием этого параметра в Android.
dotnet-dsrouter server-client
Запустите сервер диагностики приложений .NET с маршрутизацией локального IPC-клиента и удаленного TCP-сервера. Маршрутизатор настраивается с использованием IPC-сервера (с подключением к средствам диагностики) и TCP/IP-клиента (с подключением TCP-сервера среды выполнения).
Краткие сведения
dotnet-dsrouter server-client
[-ipcs|--ipc-server <ipcServer>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Параметры
-ipcs, --ipc-server <ipcServer>
Адрес IPC сервера диагностика для маршрутизации. Маршрутизатор принимает подключения IPC из средств диагностики, устанавливающих новый маршрут между средой выполнения и средством диагностики. Если это не указано, маршрутизатор будет использовать путь к серверу по умолчанию диагностика IPC.
-tcpc, --tcp-client <tcpClient>
TCP/IP-адрес среды выполнения в формате
[host]:[port]
. Маршрутизатор может подключить127.0.0.1
,[::1]
, IPv4-адрес, IPv6-адрес, имя хоста. Запустите среду выполнения с помощьюDOTNET_DiagnosticPorts
переменной среды для настройки прослушивателя.-rt, --runtime-timeout <runtimeTimeout>
Автоматически завершает работу маршрутизатора, если среда выполнения не подключается к ней до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>
Включает подробное ведение журнала (отладка|trace).
-fp, --forward-port <forwardPort>
Включает переадресацию портов. Значения имеют
Android
значение илиiOS
TcpClient
Android
только дляTcpServer
. Обязательно задайтеANDROID_SDK_ROOT
перед использованием этого параметра в Android.
dotnet-dsrouter client-client
Запустите сервер диагностики приложения .NET с маршрутизацией локального IPC-сервера и удаленного TCP-сервера. Маршрутизатор настраивается с использованием IPC-клиента (с подключением IPC-сервера средства диагностики) и TCP/IP-клиента (с подключением TCP-сервера среды выполнения).
Краткие сведения
dotnet-dsrouter client-client
[-ipcc|--ipc-client <ipcClient>]
[-tcpc|--tcp-client <tcpClient>]
[-rt|--runtime-timeout <timeout>]
[-v|--verbose <level>]
[-fp|--forward-port <platform>]
Параметры
-ipcc, --ipc-client <ipcClient>
Средство диагностики диагностика адрес IPC сервера (
--diagnostic-port argument
). Маршрутизатор подключается к серверу IPC средства диагностики при установке нового маршрута между средой выполнения и средством диагностики.-tcpc, --tcp-client <tcpClient>
TCP/IP-адрес среды выполнения в формате
[host]:[port]
. Маршрутизатор может подключить127.0.0.1
,[::1]
, IPv4-адрес, IPv6-адрес, имя хоста. Запустите среду выполнения с помощьюDOTNET_DiagnosticPorts
переменной среды для настройки прослушивателя.-rt, --runtime-timeout <runtimeTimeout>
Автоматически завершает работу маршрутизатора, если среда выполнения не подключается к ней до указанного времени ожидания (в секундах). Если не указано, маршрутизатор не будет активировать автоматическое завершение работы.
-v, --verbose <verbose>
Включает подробное ведение журнала (отладка|trace).
-fp, --forward-port <forwardPort>
Включает переадресацию портов. Значения имеют
Android
значение илиiOS
TcpClient
Android
только дляTcpServer
. Обязательно задайтеANDROID_SDK_ROOT
перед использованием этого параметра в Android.
Сбор трассировки при запуске с помощью dotnet-trace из приложения .NET, работающего в Android
Иногда бывает полезно получить трассировку приложения с момента его запуска. Ниже показано, как выполнить эту процедуру для приложения .NET, работающего в Android. Так как dotnet-dsrouter
запускается с использованием переадресации портов, тот же сценарий поддерживается для приложений, работающих в локальном эмуляторе и на физическом устройстве с подключением через USB. Не забудьте установить ANDROID_SDK_ROOT
перед использованием этого параметра или dotnet-dsrouter
не сможете найти adb
необходимые для настройки перенаправления портов.
Запустите dotnet-dsrouter в режиме"сервер — сервер":
dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
Задайте переменную среды
DOTNET_DiagnosticPorts
, используяAndroidEnvironment
:Создайте файл в том же каталоге, что и .csproj, используя такое имя, как
app.env
, добавьте переменные среды в файлDOTNET_DiagnosticPorts=127.0.0.1:9000,suspend
и включитеItemGroup
в .csproj:<ItemGroup Condition="'$(AndroidEnableProfiler)'=='true'"> <AndroidEnvironment Include="app.env" /> </ItemGroup>
Также можно задать
DOTNET_DiagnosticPorts
, используяadb shell setprop
:adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
Создайте и запустите приложение с помощью пакета SDK для Android для .NET и включите трассировку, передав
/p:AndroidEnableProfiler=true
в MSBuild. Так как приложение настроено приостанавливать работу при запуске, оно снова подключится к запущенному прослушивателю TCP/IPdotnet-dsrouter
, работающему в127.0.0.1:9000
, и будет ждать подключения средств диагностики, прежде чем возобновлять работу.Запустите
dotnet-trace
в режиме сбора с подключением к IPC-серверуdotnet-dsrouter
(~/mylocalport):dotnet-trace collect --diagnostic-port ~/mylocalport,connect
dotnet-trace
запустит сеанс трассировки и возобновит работу приложения. Поток событий начнет передаваться из мобильного приложения через dotnet-dsrouter
в файл nettrace dotnet-trace
. По завершении сбора трассировки нажмите клавишу ВВОД, чтобы убедиться, что сеанс трассировки правильно закрыт. Так в файл nettrace будут включены все необходимые данные, прежде чем приложение будет закрыто.
С течением времени можно запустить несколько сеансов трассировки для одного и того же работающего приложения, оставьте dotnet-dsrouter
выполнение и повторное выполнение dotnet-trace
при необходимости нового сеанса трассировки.
dotnet-dsrouter
можно оставить работать в фоновом режиме и использовать повторно, если приложение настроено выполнять подключение с использованием его адреса и порта.
dotnet-dsrouter
привязывается к одному запущенному приложению в любое время. Если есть необходимость отслеживать несколько разных приложений одновременно, каждое приложение должно использовать свой собственный экземпляр dotnet-dsrouter
. Для этого задайте уникальное значение IPC и пары TCP/IP-адресов в dotnet-dsrouter
, а также настройте разные экземпляры приложения для обратного подключения к уникальному экземпляру dotnet-dsrouter
.
Если dotnet-dsrouter
выполняется с --forward-port
использованием Android и adb
сервера, эмулятора или устройства перезапускается, все dotnet-dsrouter
экземпляры необходимо перезапустить, а также восстановить правила перенаправления портов.
По завершении использования dotnet-dsrouter
нажмите клавишу Q или клавиши CTRL + C, чтобы выйти из приложения.
Примечание.
Если dotnet-dsrouter
запускается в Windows, для соответствующего IPC-канала будут использоваться именованные каналы. Измените ~/mylocalport на mylocalport в примерах выше при запуске в Windows.
Примечание.
TCP/IP-порт 9000 используется для примера. Можно использовать любой свободный TCP/IP-порт.
Примечание.
Сокет домена UNIX ~/mylocalport используется для примера. Можно использовать любой свободный путь к файлу сокета домена UNIX.
Сбор трассировки с помощью dotnet-trace из приложения .NET, работающего в Android
Если во время запуска приложения нет необходимости собирать трассировку, можно запустить приложение в nosuspend
режиме, то есть среда выполнения не блокируется при запуске, ожидая подключения средств диагностики перед возобновлением выполнения. Большая часть описанного выше сценария применима и к этому режиму. Просто измените suspend
на nosuspend
в переменной среды DOTNET_DiagnosticPorts
, чтобы запустить приложение в режиме nosuspend
.