.NET 10.0 Önizleme 4, dünden beri .net indirme sayfasında indirilebilir. Yenilikler, ASP.NET çekirdeğine dayanan yeni web arıları ve Blazor çerçevesindeki iyileştirmelerle Web'in gelişimini etkiler.
Holger Schwichtenberg, Maximago yazılımının geliştirilmesinde baş teknoloji uzmanıdır. Www.it- visionions.de'deki uzman ekibi ile Microsoft, Java ve Web Teknikleri alanında ayrıca tavsiye ve eğitim sunmaktadır. Uzman konferanslarda dersler tutar ve çok sayıda uzman kitabın yazarıdır.
Aynı zamanda, Visual Studio 2022 sürüm 17.14 istikrarlı bir versiyonda yayınlandı. Daha önce aksine, Visual Studio için yeni bir önizleme sürümü 17.5 yoktur, ancak 17.14 önizleme sürüm 7. Microsoft'un 2025 yılı konferansından Seattle'da ve önümüzdeki hafta 19-22 Mayıs arasında çevrimiçi olarak gerçekleşir, Microsoft orada yeni bir ana sürüm sunabilir. Visual Studio 2022'den önceki son büyük sürüm Visual Studio 2019'du.
.NET 10.0'a paralel olarak, Visual Studio 2022 sürüm 17.14 önizleme 7 olarak yayınlandı.
(Resim: Ekran görüntüsü (Holger Schwichtenberg))
System.text.json ve ASP.NET Core tabanlı-apis için json yaması
ASP.NET Core 10.0 şimdi Microsoft'un JSON Seniizer ile ilgili olarak RFC 6902'ye göre JSON Yamasının standardını yakın System.Text.Json Ek paketin yardımıyla Microsoft.AspNetCore.JsonPatch.SystemTextJson
Şimdiye kadar, Json Patch sadece en eski kütüphaneyle ilgiliydi Newtonsoft.Json olası. Buna karşılık Microsoft, sürüm notlarında benzer bir tasarıma göre gelişmiş performans ve daha az arşivleme kullanımı vaat ediyor Newtonsoft.Jsondahil edilen nesnelerin ve dizilerin güncellenmesi dahil. Şimdiye kadar mevcut değil, dinamik nesneler için JSON yaması çünkü Newtonsoft.Json Bu amaçla, yansıma, System.Text.Json Ama aynı zamanda yerel derleyici ile de çalışmalıdır.
NuGet Microsoft.aspnetcore.jsonpatch paketinde bir sınıf var. JsonPatchDocument<T> Bir yöntemle ApplyTo(obj)Sürüm notlarından aşağıdaki kodda olduğu gibi, aktarılan nesnede bir JSON yama işlemi kullanan:
// Original object
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "[email protected]",
PhoneNumbers = [new() { Number = "123-456-7890", Type = PhoneNumberType.Mobile }],
Address = new Address
{
Street = "123 Main St",
City = "Anytown",
State = "TX"
}
};
// Raw JSON patch document
string jsonPatch = """
[
{ "op": "replace", "path": "/FirstName", "value": "Jane" },
{ "op": "remove", "path": "/Email"},
{ "op": "add", "path": "/Address/ZipCode", "value": "90210" },
{ "op": "add", "path": "/PhoneNumbers/-", "value": { "Number": "987-654-3210", "Type": "Work" } }
]
""";
// Deserialize the JSON patch document
var patchDoc = JsonSerializer.Deserialize<JsonPatchDocument<Person>>(jsonPatch);
// Apply the JSON patch document
patchDoc!.ApplyTo(person);
// Output updated object
Console.WriteLine(JsonSerializer.Serialize(person, serializerOptions));
Kod aşağıdaki sonucu oluşturur:
Output:
{
"firstName": "Jane",
"lastName": "Doe",
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "TX",
"zipCode": "90210"
},
"phoneNumbers": [
{
"number": "123-456-7890",
"type": "Mobile"
},
{
"number": "987-654-3210",
"type": "Work"
}
]
}
Önceki yenilikler için yuvarlama
ASP.NET Core 10.0 önizleme 3'ten bu yana, parametreler minimum web arılarında da doğrulanmıştır. Bu aynı zamanda parametreler bir kayıt türse önizleme 4'te de çalışır.
Openapi belgelerindeki XML belgelerinin daha önce tanıtılan değerlendirilmesi artık diğer meclislerden XML yorumlarına genişletilebilir. Notlarda Microsoft, XML'in SDK Meclisi'nden yorumladığı bir kod örneği gösterir Microsoft.AspNetCore.Http Entegre:
<Target Name="AddOpenApiDependencies" AfterTargets="ResolveReferences">
<ItemGroup>
<!-- Include XML documentation for ProblemDetails -->
<AdditionalFiles
Include="@(ReferencePath->'%(RootDir)%(Directory)%(Filename).xml')"
Condition="'%(ReferencePath.Filename)' == 'Microsoft.AspNetCore.Http.Abstractions'"
KeepMetadata="Identity;HintPath" />
</ItemGroup>
</Target>
Webassembly Blazor için Teşhis Verileri
Web tarayıcısında bir sayfa uygulama olarak çalışan Ensemble Webass'a dayanan Blazor'un varyantı yeni bir işlev elde eder: Geliştiriciler, performans, bellek ve çeşitli metrikler için teşhis verileri toplayabilir. Bunu yapmak için, mevcut sürümde .NET Wobassembly araçlarını kurmak gerekir (dotnet workload install wasm-tools) ve proje dosyasında, sürüm notlarından aşağıdaki tablonun öğeleri:
Böylece JavaScript API üzerinden teşhis verilerine erişebilirsiniz:
// Collect a performance profile using CPU sampling for a specified duration.
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
// Collect metrics for a specified duration.
globalThis.getDotnetRuntime(0).collectPerfCounters({durationSeconds: 5});
// Collect a memory dump.
globalThis.getDotnetRuntime(0).collectGcDump();
Sonuç, Visual Studio'da görüntülenebilen bir .etNetTrace dosyasıdır. Alternatif olarak, web tarayıcısı performans araçlarını da kullanabilirsiniz.
Kenar tarayıcısı, Webass topluluğunun performansı hakkındaki verileri gösterir.
(Resim: Microsoft)
C# ve JavaScript arasında birlikte çalışabilirlik
Blazor'da Microsoft, C# ve JavaScript arasındaki birlikte çalışabilirlik için arayüzleri genişletir (IJSRuntime,, IJSObjectReference,, IJSInProcessRuntime VE IJSInProcessObjectReference) yeni üyeler için. InvokeNew() VE InvokeNewAsync() Bir JavaScript nesnesinin bir örneğini oluşturun. Nesnelerin özelliklerini okumak için yöntemler de vardır (GetValue() VE GetValueAsync()) ve set (SetValue() VE SetValueAsync()).
Şimdiye kadar JavaScript'te işlevler alabilirsiniz. Invoke(),, InvokeVoid(),, InvokeAsync() VE InvokeVoidAsync() Arama. Bazı durumlarda, yeni birlikte çalışabilirlik yöntemleri bir JavaScript işlevi yazmaktan kaçınır. Bunun yerine, artık nesneler oluşturabilir ve doğrudan değerleri okuyabilir ve yazabilirsiniz. JavaScript sınıfı için
window.TestClass = class {
constructor(text) {
this.text = text;
}
getTextLength() {
return this.text.length;
}
}
Sürüm notlarındaki bir kod örneğini gösterir, yeni yöntemlerin kullanımı:
var jsObj = await JSRuntime.InvokeNewAsync("jsInterop.TestClass", "Blazor!");
var text = await jsObj.GetValueAsync<string>("text");
var textLength = await jsObj.InvokeAsync<int>("getTextLength");

Holger Schwichtenberg, Maximago yazılımının geliştirilmesinde baş teknoloji uzmanıdır. Www.it- visionions.de'deki uzman ekibi ile Microsoft, Java ve Web Teknikleri alanında ayrıca tavsiye ve eğitim sunmaktadır. Uzman konferanslarda dersler tutar ve çok sayıda uzman kitabın yazarıdır.
Aynı zamanda, Visual Studio 2022 sürüm 17.14 istikrarlı bir versiyonda yayınlandı. Daha önce aksine, Visual Studio için yeni bir önizleme sürümü 17.5 yoktur, ancak 17.14 önizleme sürüm 7. Microsoft'un 2025 yılı konferansından Seattle'da ve önümüzdeki hafta 19-22 Mayıs arasında çevrimiçi olarak gerçekleşir, Microsoft orada yeni bir ana sürüm sunabilir. Visual Studio 2022'den önceki son büyük sürüm Visual Studio 2019'du.

.NET 10.0'a paralel olarak, Visual Studio 2022 sürüm 17.14 önizleme 7 olarak yayınlandı.
(Resim: Ekran görüntüsü (Holger Schwichtenberg))
System.text.json ve ASP.NET Core tabanlı-apis için json yaması
ASP.NET Core 10.0 şimdi Microsoft'un JSON Seniizer ile ilgili olarak RFC 6902'ye göre JSON Yamasının standardını yakın System.Text.Json Ek paketin yardımıyla Microsoft.AspNetCore.JsonPatch.SystemTextJson
Şimdiye kadar, Json Patch sadece en eski kütüphaneyle ilgiliydi Newtonsoft.Json olası. Buna karşılık Microsoft, sürüm notlarında benzer bir tasarıma göre gelişmiş performans ve daha az arşivleme kullanımı vaat ediyor Newtonsoft.Jsondahil edilen nesnelerin ve dizilerin güncellenmesi dahil. Şimdiye kadar mevcut değil, dinamik nesneler için JSON yaması çünkü Newtonsoft.Json Bu amaçla, yansıma, System.Text.Json Ama aynı zamanda yerel derleyici ile de çalışmalıdır.
NuGet Microsoft.aspnetcore.jsonpatch paketinde bir sınıf var. JsonPatchDocument<T> Bir yöntemle ApplyTo(obj)Sürüm notlarından aşağıdaki kodda olduğu gibi, aktarılan nesnede bir JSON yama işlemi kullanan:
// Original object
var person = new Person
{
FirstName = "John",
LastName = "Doe",
Email = "[email protected]",
PhoneNumbers = [new() { Number = "123-456-7890", Type = PhoneNumberType.Mobile }],
Address = new Address
{
Street = "123 Main St",
City = "Anytown",
State = "TX"
}
};
// Raw JSON patch document
string jsonPatch = """
[
{ "op": "replace", "path": "/FirstName", "value": "Jane" },
{ "op": "remove", "path": "/Email"},
{ "op": "add", "path": "/Address/ZipCode", "value": "90210" },
{ "op": "add", "path": "/PhoneNumbers/-", "value": { "Number": "987-654-3210", "Type": "Work" } }
]
""";
// Deserialize the JSON patch document
var patchDoc = JsonSerializer.Deserialize<JsonPatchDocument<Person>>(jsonPatch);
// Apply the JSON patch document
patchDoc!.ApplyTo(person);
// Output updated object
Console.WriteLine(JsonSerializer.Serialize(person, serializerOptions));
Kod aşağıdaki sonucu oluşturur:
Output:
{
"firstName": "Jane",
"lastName": "Doe",
"address": {
"street": "123 Main St",
"city": "Anytown",
"state": "TX",
"zipCode": "90210"
},
"phoneNumbers": [
{
"number": "123-456-7890",
"type": "Mobile"
},
{
"number": "987-654-3210",
"type": "Work"
}
]
}
Önceki yenilikler için yuvarlama
ASP.NET Core 10.0 önizleme 3'ten bu yana, parametreler minimum web arılarında da doğrulanmıştır. Bu aynı zamanda parametreler bir kayıt türse önizleme 4'te de çalışır.
Openapi belgelerindeki XML belgelerinin daha önce tanıtılan değerlendirilmesi artık diğer meclislerden XML yorumlarına genişletilebilir. Notlarda Microsoft, XML'in SDK Meclisi'nden yorumladığı bir kod örneği gösterir Microsoft.AspNetCore.Http Entegre:
<Target Name="AddOpenApiDependencies" AfterTargets="ResolveReferences">
<ItemGroup>
<!-- Include XML documentation for ProblemDetails -->
<AdditionalFiles
Include="@(ReferencePath->'%(RootDir)%(Directory)%(Filename).xml')"
Condition="'%(ReferencePath.Filename)' == 'Microsoft.AspNetCore.Http.Abstractions'"
KeepMetadata="Identity;HintPath" />
</ItemGroup>
</Target>
Webassembly Blazor için Teşhis Verileri
Web tarayıcısında bir sayfa uygulama olarak çalışan Ensemble Webass'a dayanan Blazor'un varyantı yeni bir işlev elde eder: Geliştiriciler, performans, bellek ve çeşitli metrikler için teşhis verileri toplayabilir. Bunu yapmak için, mevcut sürümde .NET Wobassembly araçlarını kurmak gerekir (dotnet workload install wasm-tools) ve proje dosyasında, sürüm notlarından aşağıdaki tablonun öğeleri:
Mülk | önceden tanımlanmış | Değer belirleyin … | Tanım |
| YANLIŞ | GERÇEK | WebAssembly Performans Parçası için desteği etkinleştirin. |
| Hiç kimse | Tüm | Örnekleme profilleri için gerekli enstrümantasyonu etkinleştirin. |
| YANLIŞ | GERÇEK | Eventpipe desteğini etkinleştirin. |
| YANLIŞ | GERÇEK | Etkinleştir System.Diagnostics.Metrics Desteği. |
Böylece JavaScript API üzerinden teşhis verilerine erişebilirsiniz:
// Collect a performance profile using CPU sampling for a specified duration.
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
// Collect metrics for a specified duration.
globalThis.getDotnetRuntime(0).collectPerfCounters({durationSeconds: 5});
// Collect a memory dump.
globalThis.getDotnetRuntime(0).collectGcDump();
Sonuç, Visual Studio'da görüntülenebilen bir .etNetTrace dosyasıdır. Alternatif olarak, web tarayıcısı performans araçlarını da kullanabilirsiniz.

Kenar tarayıcısı, Webass topluluğunun performansı hakkındaki verileri gösterir.
(Resim: Microsoft)
C# ve JavaScript arasında birlikte çalışabilirlik
Blazor'da Microsoft, C# ve JavaScript arasındaki birlikte çalışabilirlik için arayüzleri genişletir (IJSRuntime,, IJSObjectReference,, IJSInProcessRuntime VE IJSInProcessObjectReference) yeni üyeler için. InvokeNew() VE InvokeNewAsync() Bir JavaScript nesnesinin bir örneğini oluşturun. Nesnelerin özelliklerini okumak için yöntemler de vardır (GetValue() VE GetValueAsync()) ve set (SetValue() VE SetValueAsync()).
Şimdiye kadar JavaScript'te işlevler alabilirsiniz. Invoke(),, InvokeVoid(),, InvokeAsync() VE InvokeVoidAsync() Arama. Bazı durumlarda, yeni birlikte çalışabilirlik yöntemleri bir JavaScript işlevi yazmaktan kaçınır. Bunun yerine, artık nesneler oluşturabilir ve doğrudan değerleri okuyabilir ve yazabilirsiniz. JavaScript sınıfı için
window.TestClass = class {
constructor(text) {
this.text = text;
}
getTextLength() {
return this.text.length;
}
}
Sürüm notlarındaki bir kod örneğini gösterir, yeni yöntemlerin kullanımı:
var jsObj = await JSRuntime.InvokeNewAsync("jsInterop.TestClass", "Blazor!");
var text = await jsObj.GetValueAsync<string>("text");
var textLength = await jsObj.InvokeAsync<int>("getTextLength");