Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
MTP sunucu modu bir düzenleyicinin, IDE'nin veya başka bir test aracının bir test uygulaması başlatmasına ve JSON-RPC aracılığıyla bulma ve yürütme gerçekleştirmesini sağlar. MTP çevresinde araç oluştururken sunucu modunu kullanın. Normal komut satırı ve CI çalıştırmaları için test uygulamasını doğrudan çalıştırın veya kullanın dotnet test.
Genel JSON-RPC sunucusunu --server veya --server jsonrpc ile başlatın.
Important
.NET SDK, --server dotnettestcli üzerinden ayrı bir dahili ikili protokol kullanır. Bu değeri kendiniz iletmeyin.
dotnet test aktarım ve protokol bağımsız değişkenlerini yapılandırıyor.
Yalnızca kaynak istemcisini kullanma
MTP 2.4 önizlemesi kurallı JSON-RPC istemcisi sağlar. Microsoft.Testing.Platform.ServerMode.Client.Sources paketini ekleyin. Paket, çalışma zamanı derlemesi eklemek yerine projenize C# kaynağı ekler.
Yalnızca kaynak tasarımı aşağıdakileri sağlar:
- Çalışma zamanı DLL’si veya ek dağıtım bağımlılığı yok.
- Yerel AOT uyumlu, yansımasız serileştirme.
- MTP sunucusuyla aynı depodan protokol türleri ve serileştirme kodu.
Eklenen MtpServerClient, IMtpServerClientve protokol türleri bir bağlantı başlatabilir, testleri bulabilir, testleri çalıştırabilir, sunucudan çıkış isteyebilir ve test düğümü güncelleştirmelerini raporlayabilir. Eklenen tüm türler, tüketen derlemede kalır internal .
İstemci gereksinimlerini karşılama
C# 12 veya üzerini kullanın. Paket, projeniz bir dil sürümü belirtmediğinde LangVersion değerini 12.0 olarak ayarlar. Ayrıca .NET Framework 4.6.2 ve netstandard2.0için iç uyumluluk türleri sağlar.
Yinelenen iç türlerden kaçınmak için paketi eklemeden önce MTP istemcisinin el ile yazılmış tüm kopyalarını kaldırın.
Başlatma modeli seçme
Test uygulamasını dış işlem olarak başlatmak için kullanın MtpServerClient.LaunchAsync. İstemci bu alt sürecin sahibidir ve gerektiğinde kapatma sırasında onu sonlandırır.
Process.Start kullanamayan gömülü konak veya UI iş parçacığı ortamı için MtpServerClient.LaunchInProcessAsync kullanın. Yöntem, test uygulamasını mevcut işlemde eşzamansız bir geri çağırma aracılığıyla çalıştırır. Geri çağırım ile istemci aynı işlemi paylaştığından, başlatma iş parçacığını engellemeyin.
Her iki başlatma modeli de bir geri döngü TCP aktarımı kullanır. Tarayıcı WebAssembly gerekli dinleyiciyi oluşturamadığından işlem içi başlatma PlatformNotSupportedException hatası verir. İşlem içi başlatma alternatif bir WebAssembly aktarımı sağlamaz.
İstemciyi kapat
Çağıran iş parçacığını engellemeden istemciyi ve başlatılan uygulamayı sonlandırmak için IMtpServerClient.ShutdownAsync() çağırın. Zaman uyumsuz yöntem, gömülü ana bilgisayarlarda UI iş parçacığının yanıt verebilirliğiyle ilgili sorunları ve kilitlenme sorunlarını önler.
İşlem içi bir konak için, MtpServerClientOptions.ServerShutdownTimeout istemci taşımayı kapattıktan sonra sonlandırmanın ne kadar bekleneceğini denetler. Varsayılan değer 30 saniyedir. Geri çağrının çıkış kodunu almak için kapatma işleminden sonra ServerExitCode öğesini okuyun. Değer, uygulama çalışırken veya uygulama bir çıkış kodu döndürmek yerine başarısız olduğunda kalır null .
Bağlantı davranışını seçme
İstemcinin istekler arasında durumu koruyup korumadığını sunucuya bildirmek için ayarlayın MtpServerClientOptions.IsStateful :
- Tek bir bulma veya yürütme isteğinin değerini
falseve ardından çıkış değerini bırakın. - Aynı bağlantı üzerinden birden çok istek gönderen bir düzenleyici veya IDE oturumu için değerini
trueolarak ayarlayın.
İstemci bu ayarı deneysel capabilities.testing.isStateful protokol özelliği aracılığıyla gönderir.