Bagikan melalui


dotnet-dsrouter

Artikel ini berlaku untuk: ✔️ .NET 6.0 SDK dan versi yang lebih baru

Instal

Untuk menginstal versi rilis terbaru paket dotnet-dsrouterNuGet, gunakan perintah penginstalan alat dotnet:

dotnet tool install --global dotnet-dsrouter

Sinopsis

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

Deskripsi

Menghubungkan dotnet-dsrouter alat diagnostik seperti dotnet-trace dan dotnet-counters ke aplikasi .NET yang berjalan di Android, iOS, dan tvOS, terlepas dari apakah mereka berjalan sebagai emulator, simulator, atau pada perangkat itu sendiri. Alat diagnostik menggunakan komunikasi antar-proses lokal (IPC) (Pipa Bernama, Soket Domain Unix) untuk terhubung dan berkomunikasi dengan runtime .NET. Aplikasi .NET yang berjalan di lingkungan terkotakpasir pada emulator, simulator, dan perangkat memerlukan cara alternatif untuk berkomunikasi. Injeksi itu dotnet-dsrouter sendiri antara alat diagnostik yang ada dan aplikasi seluler .NET dan membuat representasi lokal aplikasi. memungkinkan dotnet-dsrouter alat diagnostik untuk berkomunikasi dengan runtime .NET jarak jauh seolah-olah telah berjalan di komputer lokal.

Komunikasi antara alat diagnostik dan dotnet-dsrouter menggunakan IPC yang sama (Named Pipe, Unix Domain Socket) seperti yang digunakan saat menyambungkan ke runtime .NET lokal. dotnet-dsrouter menggunakan TCP/IP dalam komunikasinya dengan runtime .NET jarak jauh dan mendukung beberapa skenario konektivitas yang berbeda untuk menangani berbagai kebutuhan dan persyaratan yang digunakan oleh platform yang berbeda. dotnet-dsrouter juga menerapkan dukungan tambahan untuk menyederhanakan konfigurasi konektivitas saat berjalan di emulator, simulator, dan pada perangkat fisik yang terpasang melalui USB.

Catatan

dotnet-dsrouter ditujukan untuk pengembangan dan pengujian dan sangat disarankan untuk menjalankan dotnet-dsrouter melalui antarmuka loopback (misalnya, 127.0.0.1, [::1]). Fitur konektivitas dan kemampuan penerusan dotnet-dsrouter port menangani semua skenario menggunakan emulator lokal, simulator, atau perangkat fisik yang terhubung melalui USB.

Peringatan

Mengikat titik akhir server TCP ke apa pun kecuali antarmuka loopback (localhost, 127.0.0.1 atau [::1]) tidak disarankan. Koneksi apa pun ke titik akhir server TCP tidak akan diautentikasi dan tidak terenkripsi. dotnet-dsrouter ditujukan untuk penggunaan pengembangan dan hanya boleh dijalankan dalam lingkungan pengembangan dan pengujian.

Penggunaan dotnet-dsrouter terperinci bersama dengan aplikasi seluler diuraikan oleh masing-masing .NET SDK. Dokumen ini hanya akan menyertakan beberapa contoh tentang cara menjalankan alat diagnostik terhadap aplikasi .NET yang berjalan di Android. Untuk detail mendalam tentang konfigurasi dan skenario, lihat Pelacakan Diagnostik.

Opsi

  • -?|-h|--help

    Tampilkan bantuan baris perintah.

  • --version

    Menampilkan versi dotnet-dsrouter utilitas.

Perintah

Perintah
dotnet-dsrouter client-server
server-server dotnet-dsrouter
dotnet-dsrouter server-client
dotnet-dsrouter client-client

dotnet-dsrouter client-server

Mulai server diagnostik aplikasi .NET yang merutekan server IPC lokal dan klien TCP jarak jauh. Router dikonfigurasi menggunakan klien IPC (menghubungkan server IPC alat diagnostik) dan server TCP/IP (menerima klien TCP runtime).

Sinopsis

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

Opsi

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

    Menentukan alamat IPC server diagnostik alat diagnostik (--diagnostic-port argumen). Router terhubung ke server IPC alat diagnostik saat membuat rute baru antara runtime dan alat diagnostik.

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

    Menentukan alamat TCP/IP router menggunakan format [host]:[port]. Router dapat mengikat satu (127.0.0.1, [::1], 0.0.0.0, [::], alamat IPv4, alamat IPv6, nama host) atau semua antarmuka (*). Meluncurkan runtime menggunakan DOTNET_DiagnosticPorts variabel lingkungan dan menghubungkan server TCP router selama startup.

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

    Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.

  • -v, --verbose <verbose>

    Mengaktifkan pengelogan verbose (debug|pelacakan).

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

    Mengaktifkan penerusan port. Nilainya adalah Android atau iOS untuk TcpClient, dan hanya Android untuk TcpServer. Pastikan untuk mengatur ANDROID_SDK_ROOT sebelum menggunakan opsi ini di Android.

server-server dotnet-dsrouter

Mulai server diagnostik aplikasi .NET yang merutekan klien IPC lokal dan klien TCP jarak jauh. Router dikonfigurasi menggunakan server IPC (menyambungkan dengan alat diagnostik) dan server TCP/IP (menerima klien TCP runtime).

Sinopsis

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

Opsi

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

    Alamat IPC server diagnostik untuk dirutekan. Router menerima koneksi IPC dari alat diagnostik yang membangun rute baru antara runtime dan alat diagnostik. Jika tidak ditentukan, router akan menggunakan jalur server diagnostik IPC default.

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

    Alamat TCP/IP router dalam format [host]:[port]. Router dapat mengikat satu (127.0.0.1, [::1], 0.0.0.0, [::], alamat IPv4, alamat IPv6, nama host) atau semua antarmuka (*). Luncurkan runtime menggunakan DOTNET_DiagnosticPorts variabel lingkungan, menghubungkan server TCP router selama startup.

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

    Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.

  • -v, --verbose <verbose>

    Mengaktifkan pengelogan verbose (debug|pelacakan).

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

    Mengaktifkan penerusan port. Nilainya adalah Android atau iOS untuk TcpClient, dan hanya Android untuk TcpServer. Pastikan untuk mengatur ANDROID_SDK_ROOT sebelum menggunakan opsi ini di Android.

dotnet-dsrouter server-client

Mulai server diagnostik aplikasi .NET yang merutekan klien IPC lokal dan server TCP jarak jauh. Router dikonfigurasi menggunakan server IPC (menyambungkan ke dengan alat diagnostik) dan klien TCP/IP (menghubungkan server TCP runtime).

Sinopsis

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

Opsi

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

    Alamat IPC server diagnostik untuk dirutekan. Router menerima koneksi IPC dari alat diagnostik yang membangun rute baru antara runtime dan alat diagnostik. Jika tidak ditentukan, router akan menggunakan jalur server diagnostik IPC default.

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

    Alamat TCP/IP runtime dalam format [host]:[port]. Router dapat menyambungkan 127.0.0.1, [::1], alamat IPv4, alamat IPv6, alamat nama host. Luncurkan runtime menggunakan DOTNET_DiagnosticPorts variabel lingkungan untuk menyiapkan pendengar.

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

    Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.

  • -v, --verbose <verbose>

    Mengaktifkan pengelogan verbose (debug|pelacakan).

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

    Mengaktifkan penerusan port. Nilainya adalah Android atau iOS untuk TcpClient, dan hanya Android untuk TcpServer. Pastikan untuk mengatur ANDROID_SDK_ROOT sebelum menggunakan opsi ini di Android.

dotnet-dsrouter client-client

Mulai server diagnostik aplikasi .NET merutekan server IPC lokal dan server TCP jarak jauh. Router dikonfigurasi menggunakan klien IPC (menghubungkan server IPC alat diagnostik) dan klien TCP/IP (menghubungkan server TCP runtime).

Sinopsis

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

Opsi

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

    Alamat IPC server diagnostik alat diagnostik (--diagnostic-port argument). Router terhubung ke server IPC alat diagnostik saat membuat rute baru antara runtime dan alat diagnostik.

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

    Alamat TCP/IP runtime dalam format [host]:[port]. Router dapat menyambungkan 127.0.0.1, [::1], alamat IPv4, alamat IPv6, alamat nama host. Luncurkan runtime menggunakan DOTNET_DiagnosticPorts variabel lingkungan untuk menyiapkan listener.

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

    Secara otomatis mematikan router jika tidak ada runtime yang tersambung ke perutean sebelum batas waktu yang ditentukan (detik). Jika tidak ditentukan, router tidak akan memicu pematian otomatis.

  • -v, --verbose <verbose>

    Mengaktifkan pengelogan verbose (debug|pelacakan).

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

    Mengaktifkan penerusan port. Nilainya adalah Android atau iOS untuk TcpClient, dan hanya Android untuk TcpServer. Pastikan untuk mengatur ANDROID_SDK_ROOT sebelum menggunakan opsi ini di Android.

Mengumpulkan jejak startup menggunakan dotnet-trace dari aplikasi .NET yang berjalan di Android

Terkadang mungkin berguna untuk mengumpulkan jejak aplikasi dari startup-nya. Langkah-langkah berikut menggambarkan proses melakukannya dengan menargetkan aplikasi .NET yang berjalan di Android. Karena dotnet-dsrouter dijalankan menggunakan penerusan port, skenario yang sama berfungsi terhadap aplikasi yang berjalan pada emulator lokal dan pada perangkat fisik yang terpasang melalui USB. Pastikan untuk mengatur ANDROID_SDK_ROOT sebelum menggunakan opsi ini atau dotnet-dsrouter tidak akan dapat menemukan adb yang diperlukan untuk menyiapkan penerusan port.

  • Luncurkan dotnet-dsrouter dalam mode server-server:

    dotnet-dsrouter server-server -ipcs ~/mylocalport -tcps 127.0.0.1:9000 --forward-port Android &
    
  • Atur DOTNET_DiagnosticPorts variabel lingkungan menggunakan AndroidEnvironment:

    Buat file di direktori yang sama dengan .csproj menggunakan nama seperti app.env, tambahkan variabel lingkungan ke dalam file, DOTNET_DiagnosticPorts=127.0.0.1:9000,suspend dan sertakan berikut ItemGroup ke dalam .csproj:

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

    Dimungkinkan juga untuk mengatur DOTNET_DiagnosticPorts menggunakan adb shell setprop:

    adb shell setprop debug.mono.profile '127.0.0.1:9000,suspend'
    
  • Buat dan luncurkan aplikasi menggunakan .NET Android SDK, dan aktifkan pelacakan dengan meneruskan /p:AndroidEnableProfiler=true ke MSBuild. Karena aplikasi telah dikonfigurasi untuk menangguhkan saat startup, aplikasi akan terhubung kembali ke dotnet-dsrouter listener TCP/IP yang berjalan 127.0.0.1:9000 dan menunggu alat diagnostik tersambung sebelum melanjutkan eksekusi aplikasi.

  • Mulai dotnet-trace dalam mode kumpulkan, sambungkan ke dotnet-dsrouter server IPC, ~/mylocalport:

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

dotnet-trace akan memulai sesi pelacakan dan melanjutkan aplikasi yang sekarang akan terus dijalankan. Aliran peristiwa akan mulai mengalir dari aplikasi seluler, melalui dotnet-dsrouter ke file dotnet-trace nettrace. Setelah selesai melacak, tekan Enter untuk memastikan sesi pelacakan ditutup dengan benar memastikan file nettrace menyertakan semua data yang diperlukan sebelum aplikasi ditutup.

Dimungkinkan untuk menjalankan beberapa sesi pelacakan terhadap aplikasi yang berjalan yang sama dari waktu ke waktu, biarkan dotnet-dsrouter berjalan dan jalankan dotnet-trace kembali ketika sesi pelacakan baru diperlukan.

dotnet-dsrouter dapat dibiarkan berjalan di latar belakang dan digunakan kembali jika aplikasi dikonfigurasi untuk terhubung menggunakan alamat dan portnya.

dotnet-dsrouter terkait dengan satu aplikasi yang berjalan kapan saja. Jika perlu melacak beberapa aplikasi yang berbeda pada saat yang sama, setiap aplikasi perlu menggunakan instansnya sendiri dotnet-dsrouter , dengan menyiapkan pasangan alamat IPC, TCP/IP unik dan dotnet-dsrouter mengonfigurasi instans aplikasi yang berbeda untuk terhubung kembali ke instans uniknya dotnet-dsrouter .

Jika dotnet-dsrouter dijalankan dengan --forward-port menargetkan Android dan adb server, emulator, atau perangkat akan dimulai ulang, semua dotnet-dsrouter instans perlu dimulai ulang juga untuk memulihkan aturan penerusan port.

Setelah selesai menggunakan dotnet-dsrouter, tekan Q atau Ctrl + C untuk keluar dari aplikasi.

Catatan

Ketika berjalan dotnet-dsrouter pada Windows, ia akan menggunakan Pipa Bernama untuk saluran IPC-nya. Ganti ~/mylocalport dengan mylocalport dalam contoh di atas saat berjalan di Windows.

Catatan

Port TCP/IP 9000 hanyalah contoh. Port TCP/IP gratis apa pun dapat digunakan.

Catatan

Unix Domain Socket ~/mylocalport hanyalah contoh. Jalur file Unix Domain Socket gratis dapat digunakan.

Mengumpulkan jejak menggunakan dotnet-trace dari aplikasi .NET yang berjalan di Android

Jika tidak perlu mengumpulkan jejak selama startup aplikasi, dimungkinkan untuk meluncurkan aplikasi dalam nosuspend mode, yang berarti runtime tidak akan memblokir saat startup menunggu alat diagnostik tersambung sebelum memulai kembali eksekusi. Sebagian besar skenario yang dijelaskan di atas juga berlaku untuk mode ini, cukup ganti suspend dengan nosuspend dalam DOTNET_DiagnosticPorts variabel lingkungan untuk meluncurkan aplikasi dalam nosuspend mode.

Lihat juga