<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>C# on .NET wat we zoeken</title><link>https://blog.netwatwezoeken.nl/tags/c%23/</link><description>Recent content in C# on .NET wat we zoeken</description><generator>Hugo</generator><language>en</language><lastBuildDate>Thu, 20 Nov 2025 11:26:00 +0100</lastBuildDate><atom:link href="https://blog.netwatwezoeken.nl/tags/c%23/index.xml" rel="self" type="application/rss+xml"/><item><title>Strangling SOAP: migrate to modern .NET without breaking clients</title><link>https://blog.netwatwezoeken.nl/posts/strangling-soap/</link><pubDate>Thu, 20 Nov 2025 11:26:00 +0100</pubDate><guid>https://blog.netwatwezoeken.nl/posts/strangling-soap/</guid><description>&lt;p&gt;The Strangler Fig pattern is one of those transitional architecture patterns to get to a better system. But strangling SOAP is a bit difficult. If you just put a proxy in front of a SOAP service, you’ll quickly bump into a painful detail: SOAP typically exposes a single HTTP endpoint. All operations share one path, and the actual method is picked using headers like &lt;code&gt;SOAPAction&lt;/code&gt; or &lt;code&gt;action&lt;/code&gt; and the body contents. That makes the usual reverse‑proxy trick an &amp;ldquo;all or nothing&amp;rdquo; mechanism. Not at all a Strangler Fig approach. But there is a way!&lt;/p&gt;</description></item><item><title>Playwright in a single file dotnet app</title><link>https://blog.netwatwezoeken.nl/posts/playwright-and-single-file-dotnet/</link><pubDate>Fri, 14 Nov 2025 18:43:04 +0100</pubDate><guid>https://blog.netwatwezoeken.nl/posts/playwright-and-single-file-dotnet/</guid><description>&lt;p&gt;One of the recent additions in .NET is that you can now have single file projects. In this article we&amp;rsquo;ll explore how to use Playwright in such file.&lt;/p&gt;
&lt;p&gt;&lt;img alt="Playwright and dotnet run app.cs" loading="lazy" src="https://blog.netwatwezoeken.nl/assets/images/2025/11/Playwright-dotnet-run-app2.png"&gt;&lt;/p&gt;
&lt;p&gt;TL;DR: Full example at the end of this page.&lt;/p&gt;
&lt;h2 id="why"&gt;Why?&lt;/h2&gt;
&lt;p&gt;More and more I use Playwright not only for testing but also for small automation scripts and to quickly make demos using it&amp;rsquo;s handy built-in recorder. Before .NET 10 that would required a C# project, a directory with a &lt;code&gt;csproj&lt;/code&gt; file a &lt;code&gt;cs&lt;/code&gt; file and the Playwright package installed.&lt;/p&gt;</description></item><item><title>Stryker in a CI/CD pipeline</title><link>https://blog.netwatwezoeken.nl/posts/using-stryker-a-ci-cd-pipeline/</link><pubDate>Sat, 10 Feb 2024 12:25:38 +0200</pubDate><guid>https://blog.netwatwezoeken.nl/posts/using-stryker-a-ci-cd-pipeline/</guid><description>&lt;p&gt;In &lt;a href="https://blog.netwatwezoeken.nl/mutation-testing-ftw/"&gt;my last blog&lt;/a&gt; I wrote about why mutation testing is a better way of measuring test completeness.
I also mentioned the drawback regarding performance.&lt;/p&gt;
&lt;p&gt;In this blog I&amp;rsquo;d like to discuss what Stryker does to increase performance and the things you can do in your pipeline to get the most out of mutations testing every check-in.&lt;/p&gt;
&lt;h2 id="what-stryker-already-does"&gt;What stryker already does&lt;/h2&gt;
&lt;h3 id="concurrency"&gt;Concurrency&lt;/h3&gt;
&lt;p&gt;By default Stryker takes half of the available cores to do the work. Use the concurrency to use more or less cores of you system. I tested this on a 8 core machine. When using 4 core the whole process takes 02:42. Whit 8 cores that same process took almost 30 seconds less, 02:18.&lt;/p&gt;</description></item><item><title>Use mutation testing to replace code coverage</title><link>https://blog.netwatwezoeken.nl/posts/mutation-testing-ftw/</link><pubDate>Fri, 02 Feb 2024 10:25:45 +0200</pubDate><guid>https://blog.netwatwezoeken.nl/posts/mutation-testing-ftw/</guid><description>&lt;p&gt;It is pretty common to use some sort of code coverage measurement tool along with unit tests to gather feedback on completeness of your test suite. Measuring code coverage is great start to find out if your code needs more testing. But by it&amp;rsquo;s nature it also comes with some caveats. In this article I&amp;rsquo;ll explain these caveats and how mutation testing fills these caps and turns out more valuable as a source of feedback.&lt;/p&gt;</description></item><item><title>Simplifying .NET solution upgrades with Directory.Build.props and Directory.Packages.props</title><link>https://blog.netwatwezoeken.nl/posts/solution-wide-properties-in-dotnet/</link><pubDate>Mon, 23 Oct 2023 22:46:34 +0200</pubDate><guid>https://blog.netwatwezoeken.nl/posts/solution-wide-properties-in-dotnet/</guid><description>&lt;p&gt;With .NET 8 almost released it is time to make upgrading easier. In this blog I&amp;rsquo;ll explain about &lt;code&gt;Directory.Build.props&lt;/code&gt; and &lt;code&gt;Directory.Packages.props&lt;/code&gt; and how these can make upgrading easier.&lt;/p&gt;
&lt;p&gt;Most solutions consist of multiple projects. Even if all of your production code is in a single project chances are that your tests are in a different project. The separation that projects bring can be great, but sometimes managing dependencies can be a hassle.&lt;/p&gt;</description></item><item><title>Source generation in System.Text.Json, should I care?</title><link>https://blog.netwatwezoeken.nl/posts/source-generation-in-system-text/</link><pubDate>Mon, 21 Feb 2022 12:45:04 +0200</pubDate><guid>https://blog.netwatwezoeken.nl/posts/source-generation-in-system-text/</guid><description>&lt;p&gt;With the release of .NET 6 also came the option to use source generation in System.Text.Json. In short this means that instead of runtime reflection some of the work is now done compile time. This makes it more efficient. But how much? And should I care?
Just measure it. I made a small project that you can use and adjust to measure the difference for your specific case. Let the results help you decide what&amp;rsquo;s best for your application.&lt;/p&gt;</description></item></channel></rss>