İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Güvenlik & Kimlik
  • VSTest Newtonsoft.Json Bağımlılığını Atıyor: Ne Değişiyor?
DevOps Geliştirici Araçları Güvenlik & Kimlik CVE, DevSecOps, dotnet test, Newtonsoft.Json, NuGet güvenliği, Visual Studio 18.8, VSTest Aşkın KILIÇ 02/05/2026 3 Yorumlar

VSTest Newtonsoft.Json Bağımlılığını Atıyor: Ne Değişiyor?

VSTest Newtonsoft.Json Bağımlılığını Atıyor: Ne Değişiyor?
📑 İçindekiler
  1. Hadi baştan alalım: Neden bu değişiklik lazım oldu?
  2. Yerine ne geliyor? İki ayrı yol seçilmiş
  3. Wire format aynı kalıyor — burası kritik
  4. Kim etkilenmez? Çoğunluk büyük ihtimalle dahil
  5. Peki kim etkilenir, nasıl toparlanır?
  6. 1. Senaryo: Build hatası — eksik referans
  7. 2. Senaryo: Runtime'da FileNotFoundException
  8. 3. Senaryo: Test adapter veya data collector yüklenemiyor
  9. Kısa karar tablosu
  10. Sıkça Sorulan Sorular
  11. VSTest'in Newtonsoft.Json bağımlılığını kaldırması performansı etkiler mi?
  12. Eski.NET Framework projelerimde JSONite otomatik mi gelecek?
  13. Newtonsoft.Json'ı tamamen projeden kaldırmalı mıyım?
  14. Bu değişiklik.NET 10 LTS'i etkiler mi?
  15. CI/CD pipeline'larımda farklı VS sürümleri var, sorun olur mu?
  16. Kaynaklar ve İleri Okuma

⏱️ 5 dk okuma📅 2 Mayıs 2026🔄 Güncelleme: 29 Ekim 2026

Bir haber düştü, açık konuşayım pek çok kişinin gözüne çarpmadı ama.NET tarafında baya beklenen bir temizlik bu. Microsoft, VSTest’i — yani dotnet test ve Visual Studio Test Explorer’ın arkasında çalışan platformu — Newtonsoft.Json bağımlılığından çıkarıyor..NET 11 Preview 4 ve Visual Studio 18.8 ile geliyor.

Açıkçası, Kulağa küçük bir teknik detay gibi geliyor, değil mi? Ama değil (buna dikkat edin). Bunun arkasında yıllardır biriken bir hikâye var ve sahada can sıkan noktayı nihayet toparlıyor (evet, doğru duydunuz)

Hadi baştan alalım: Neden bu değişiklik lazım oldu?

VSTest, Newtonsoft.Json’ı uzun süredir.NET SDK’nın ve Visual Studio’nun içinde taşıyordu (ciddiyim). Başta mantıklıydı, çünkü System.Text.Json ortada yokken Newtonsoft.Json zaten herkesin alıştığı şeydi. İlginç, değil mi? Hatta bugün bile NuGet dünyasında en çok indirilen paketlerden biri.

Sorun şu: Newtonsoft.Json’ın 13.0.0 altındaki neredeyse tüm sürümleri NuGet.org’da artık “vulnerable” diye işaretleniyor. Yani güvenlik araçları (Snyk, Dependabot, GitHub Advanced Security) bu sürümleri görünce hemen alarm veriyor, sonra siz de “ama ben kullanmıyorum ki” diye kalıyorsunuz.

Geçen ay bir bankacılık müşterimde tam buna takıldık (inanın bana). Pipeline’da Snyk taraması açıktı ve VSTest’in transitive olarak çektiği eski bir Newtonsoft.Json sürümü yüzünden build kıpkırmızı oldu. Halbuki proje kodunda bizim Newtonsoft.Json kullandığımız tek satır yoktu! Ekip günlerce bu transitive bağımlılığı izlemeye uğraştı, sonunda NoWarn ile susturduk ama açık konuşayım bu çözüm değil; biraz halının altına süpürmek gibi.

Test platformunuzun, sizin hiç dokunmadığınız bir kütüphane yüzünden CVE listesinde görünmesi — bak şimdi, modern DevSecOps düzeninde pek savunulur bir durum değil. Microsoft’un attığı bu adım da yıllardır ötelenen borcun kapanması gibi duruyor.

Yerine ne geliyor? İki ayrı yol seçilmiş

İşin ilginç kısmı şu: Tek bir alternatif yerine iki farklı çözüm seçmişler. Sebep de gayet net.NET ile.NET Framework’ün ihtiyacı aynı değil.

Hmm, bunu nasıl anlatsamdı…

  • .NET tarafında: System.Text.Json kullanılacak. Zaten BCL’in parçası, ekstra paket derdi yok.
  • .NET Framework tarafında: JSONite adında küçük, gömülü bir JSON kütüphanesi gelecek. Bu da dış bağımlılık eklemiyor.

JSONite ismini ben de ilk kez gördüm, hani şaşırdım biraz. Microsoft’un içerde tuttuğu minik bir parser gibi duruyor. Mantık basit:.NET Framework’te System.Text.Json’ı paket olarak getirmeye kalksanız yeni bağımlılık zinciri çıkıyor ortaya (inanın bana). Onun yerine kendi yazdıkları küçük parser’la işi kapatmışlar. Fena değil.

Wire format aynı kalıyor — burası kritik

Durun bir saniye, çünkü önemli nokta burada. VSTest’in test host’larıyla konuştuğu protokol — yani wire format — değişmiyor. Mesajlar Newtonsoft.Json, System.Text.Json ya da JSONite ile serileştirilmiş olsa da sonuç aynı byte dizisi oluyor.

Bir şey dikkatimi çekti: Bu ne demek? Eski testhost’lar yeni platformla, yeni testhost’lar eski platformla konuşmaya devam edecek. Geriye uyumluluk korunuyor. CI/CD pipeline’larında karışık sürüm kullanan ekipler için (ki enterprise tarafında bu baya yaygın) ciddi rahatlık sağlayan bir karar bu.

Kim etkilenmez? Çoğunluk büyük ihtimalle dahil

Açık konuşayım: Çoğu test projesi bu değişiklikten hiç etkilenmeyecek (evet, doğru duydunuz). Üç gruptan biriyseniz oturduğunuz yerden devam edin: Daha fazla bilgi için

Peki kim etkilenir, nasıl toparlanır?

Üç ayrı senaryoda kırılma olabiliyor. Tek tek bakalım; hata mesajları birbirine benzese de çözüm aynı değil gibi görünüyor ama aslında epey ayrışıyor.

1. Senaryo: Build hatası — eksik referans

Test projeniz JObject, JsonConvert gibi Newtonsoft.Json tiplerini kullanıyor ama paketi kendi .csproj‘unuza eklememişsiniz. Şimdiye kadar derlenmesinin tek sebebi VSTest’in NewtonSoft.Json’ı arkadan sızdırmasıydı. Güncellemeden sonra build patlayacak.

Çözüm tek satır:

<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />

Bak şimdi, Bunu büyük kod tabanlarında çok gördüm ben. En çok da de de eski projelerde biri zamanında JObject kullanmış oluyor, sonra “build geçiyor ya tamam” deyip bırakıyor işi öylece gidiyorlar. Halbuki altyapıda ödünç alınmış bir bağımlılık varmış meğer.

2. Senaryo: Runtime’da FileNotFoundException

Bu daha sinsice geliyor. Şöyle bir tanımınız varsa:

<PackageReference Include="Newtonsoft.Json" Version="13.0.3">
<ExcludeAssets>runtime</ExcludeAssets>
</PackageReference>

Daha doğrusu derleme zamanında referans var ama runtime asset bilerek hariç tutulmuşsa… Bazı ekipler bunu “Visual Studio veya VSTest (belki yanılıyorum ama) zaten taşıyor, tekrar kopyalamaya gerek yok” diye yapıyordu (şaşırtıcı ama gerçek). Güncellemeden sonra şu hatayı görmeniz muhtemel:

System.IO.FileNotFoundException: Could not load file or assembly 
'Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, 
PublicKeyToken=30ad4fe6b2a6aeed'.

Bi saniye — Çözüm basit: ExcludeAssets satırını silin ya da en azından runtime‘ı hariç tutmayın.

3. Senaryo: Test adapter veya data collector yüklenemiyor

Burası en tatsız olan grup olabilir. Özel yazılmış test adapter’larınız ya da data collector’larınız varsa ve bunlar Newtonsoft.Json kullanıyor ama bağımlılığı açıkça beyan etmiyorsa yükleme sırasında tökezleyecekler.

2022’de bir telekom projesinde özel bir performance data collector yazmıştık biz de aynı şekilde metrik topluyordu ve JSON serileştirme için Newtonsoft.Json kullanıyordu. Ama .csproj‘da referansı yoktu, çünkü VSTest’ten “miras” alıyordu diyelim artık ona da… İşte böyle bir kod güncellemeden sonra şu tarz bir mesajla duvara toslayacak:

Data collector 'SampleDataCollector' threw an exception during 
type loading, construction, or initialization: 
System.IO.FileNotFoundException: Could not load file or assembly 
'Newtonsoft.Json, Version=13.0.0.0...'

Şunu söyleyeyim, Çözüm yine aynı: Adapter veya collector projenizde Newtonsoft.Json’ı açık PackageReference olarak tanımlayın.

Kısa karar tablosu

Lafı dolandırmadan özeti tabloya dökelim; kim ne yapacak belli olsun:

Durum Etkilenir mi? Aksiyon
Newtonsoft.Json hiç kullanmıyorum Hayır Yok
PackageReference olarak ekledim Hayır Yok
Kullanıyorum ama referansım yok Evet (build hatası) PackageReference ekle
ExcludeAssets=runtime kullanıyorum Evet (runtime hatası) ExcludeAssets’i kaldır
Cusom adapter/collector geliştiriyorum Büyük ihtimalle evet

Sıkça Sorulan Sorular

VSTest’in Newtonsoft.Json bağımlılığını kaldırması performansı etkiler mi?

Microsoft’a göre serileştirme performansı aynı kalıyor, hatta daha iyi bile olabilir. Hani System.Text.Json zaten Newtonsoft.Json’dan genelde daha hızlı çalışıyor. JSONite de minimal bir parser olduğu için onun yükü de düşük. Açıkçası pratikte bir fark hissetmenizi beklemiyorum.

Eski.NET Framework projelerimde JSONite otomatik mi gelecek?

Vallahi, Evet. JSONite, VSTest’in içine gömülü geliyor, yani manuel olarak paket eklemenize gerek yok. Aslında tek dikkat etmeniz gereken şey şu: kendi kodunuzda Newtonsoft.Json kullanıyorsanız önü açıkça referans etmeniz gerekiyor.

Newtonsoft.Json’ı tamamen projeden kaldırmalı mıyım?

Hayır, gerek yok. Kodunuz Newtonsoft.Json kullanıyorsa kullanmaya devam edin, mesela sadece sürümü 13.0.3 veya üstüne çekmeniz yeterli. System.Text.Json’a geçiş bence ayrı bir proje olarak ele alınması gereken bir konu, VSTest’in bu değişikliğiyle doğrudan alakası yok.

Bu değişiklik.NET 10 LTS’i etkiler mi?

Kendi deneyimimden konuşuyorum, Hayır. Değişiklik.NET 11 Preview 4 ve VS 18.8 bir düşüneyim… ile geliyor..NET 10 LTS kullanıcıları mevcut davranışlarını korumaya devam ediyor. Yani tecrübeme göre LTS’de kalmak isteyen kurumsal müşteriler bu konuda hiç acele etmek zorunda değil.

CI/CD pipeline’larımda farklı VS sürümleri var, sorun olur mu?

Olmaz. VSTest wire format’ı korunduğu için eski testhost’lar yeni platformla, yeni testhost’lar eski platformla uyumlu çalışmaya devam ediyor. Kademeli geçiş yapabilirsiniz, güvenli.

Kaynaklar ve İleri Okuma

VSTest is Removing its Newtonsoft.Json Dependency —.NET Blog (McKenna Barlow)

System.Text.Json Resmî Dokümantasyonu

VSTest GitHub Repository

İşte, bi saniye — .NET Test Etme Rehberi — Microsoft Learn

🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Apple Watch’ta Token Taşıma: Entra External ID’de Yeni Dönem
Apple Watch’ta Token Taşıma: Entra External ID’de Yeni Dönem2 May 2026
npm Trusted Publishing ile dist-tag Yönetimi Token'sız
npm Trusted Publishing ile dist-tag Yönetimi Token'sız1 Eki 2026
AI Agent'larda Sohbet Geçmişi: Nerede Saklamalı?
AI Agent'larda Sohbet Geçmişi: Nerede Saklamalı?26 Nis 2026
GitHub Secure Open Source Fund: 50 Projeden Güvenlik
GitHub Secure Open Source Fund: 50 Projeden Güvenlik13 Ağu 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket CVE DevSecOps dotnet test Newtonsoft.Json NuGet güvenliği Visual Studio 18.8 VSTest
Önceki yazı

Azure DocumentDB ile Bankalarda Customer 360: Dağınık Veriden Net Resme

Sonraki yazı

Kubernetes v1.36 Pod-Level Resource Managers: Sidecar Derdi Bitiyor

İlginizi Çekebilir

GitHub Copilot Agent Host: Oturumlar Arka Planda Sürüyor
Aşkın KILIÇ 0

GitHub Copilot Agent Host: Oturumlar Arka Planda Sürüyor

30/10/2026
Syncfusion Toolkit for Blazor: MIT Lisanslı Bileşenler
Aşkın KILIÇ 0

Syncfusion Toolkit for Blazor: MIT Lisanslı Bileşenler

29/10/2026
Copilot UX Components: SPFx 1.24 ile Etkileşimli Arayüz
Aşkın KILIÇ 0

Copilot UX Components: SPFx 1.24 ile Etkileşimli Arayüz

29/10/2026

3 comments

comments user
Koray M. 02/05/2026 17:08

Bunu yaşadım, test projesinde Newtonsoft versiyonuyla saatler harcamıştım. Temiz bir karar aslında, bağımlılık kirliliğini azaltmak adına doğru yön. Bakalım geçiş sürecinde kaç projenin patlayacağını…

Bu arada şu yazınız da güzeldi: Azure Integrated HSM: Güvenin Donanım Katmanına İnişi — https://www.askinkilic.com.tr/azure-integrated-hsm-guvenin-donanim-katmanina-inisi/

comments user
Burak S. 02/05/2026 20:45

Uzun süredir bu bağımlılığın neden hâlâ orada olduğunu merak ediyordum açıkçası. Test projelerinde Newtonsoft sürüm çakışması yüzünden saçma hatalar aldığımı hatırlıyorum, umarım bu adımdan sonra o tür sorunlar tarihe karışır.

comments user
Aslı S. 03/05/2026 02:54

Bunu duymak güzel aslında, Newtonsoft.Json versiyonu yüzünden test pipeline’larında çakışma yaşayan tek ben değilmişim demek. Peki bu geçiş sırasında eski sürüme bağımlı test adaptörleri kullananlar için bir uyumluluk katmanı var mı acaba?

Yorumlar kapalı.

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • GitHub Copilot Agent Host: Oturumlar Arka Planda Sürüyor
    30/10/2026 GitHub Copilot Agent Host: Oturumlar Arka Planda Sürüyor
  • Syncfusion Toolkit for Blazor: MIT Lisanslı Bileşenler
    29/10/2026 Syncfusion Toolkit for Blazor: MIT Lisanslı Bileşenler
  • Copilot UX Components: SPFx 1.24 ile Etkileşimli Arayüz
    29/10/2026 Copilot UX Components: SPFx 1.24 ile Etkileşimli Arayüz
  • Azure SQL DMV'leri: PostgreSQL'den Gelenler İçin Tanı
    29/10/2026 Azure SQL DMV’leri: PostgreSQL’den Gelenler İçin Tanı
  • Visual Studio Subscription ile Sertifika Hazırlığı
    29/10/2026 Visual Studio Subscription ile Sertifika Hazırlığı
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • Artımlı Anlık Görüntü: Anında Geri Yükleme
    09/03/2026 Artımlı Anlık Görüntü: Anında Geri Yükleme
  • Bulut Sunucu Altyapısı
    09/03/2026 Microsoft Sovereign Cloud: İzolasyonda Güvenli Bulut
  • GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
    04/10/2026 GitHub Copilot: Kaldırılan 4 Model ve Geçiş Alternatifleri
  • Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
    18/03/2026 Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure Functions Azure OpenAI azure sdk Azure SQL CI/CD CodeQL code review copilot Copilot CLI DevOps Entra ID geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry MSVC otomasyon performans Pull Request RAG verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim
  • Künye
  • Yayın İlkeleri

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası Analitik çerezler yalnız izninizle açılır. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 572 yazı 🏗️ Bulut Altyapı 453 yazı 🤖 Yapay Zeka 360 yazı ☁️ Microsoft Azure 318 yazı 🔧 DevOps 301 yazı 🔒 Güvenlik & Kimlik 254 yazı 🏢 Kurumsal Teknoloji 121 yazı 📊 Veri & Analitik 86 yazı 🐳 Konteyner & Kubernetes 65 yazı 📧 Microsoft 365 12 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Azure DocumentDB ile Bankalard...
    Kubernetes v1.36 Pod-Level Res... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS