JetBrains .NET Day Online ’23

A free virtual community event

September 26, 2023

  • 09:55 - 21:00 CET/CEST
  • 03:55 - 15:00 EST/EDT
  • 00:55 - 12:00 PST/PDT

Once a year, we invite community speakers to cover topics they’re passionate about

This year’s agenda includes debugging Blazor WASM apps, xUnit tips and tricks, F#, microservice architecture, and cross-platform development with Avalonia. On top of that, we’ll discuss the challenges of observability and the utilization of Entity Framework Core features.

Expect lots of demo-rich sessions and useful tips for all skill levels that you can apply in your daily development. You’ll even have the chance to ask questions and elicit insights from the speakers!

We’ll livestream the presentations on YouTube and Twitch, and all the sessions will remain available after the event is over so you can catch up on anything you miss.

This event is supported by the .NET Foundation.

Agenda

September 26, Tuesday

  • 09:55 - 10:00 CET/CEST
  • 03:55 - 04:00 EST/EDT
  • 00:55 - 01:00 PST/PDT

Welcome to JetBrains .NET Day ’23!

Welcome to JetBrains .NET Day ’23!

  • 10:00 - 10:45 CET/CEST
  • 04:00 - 04:45 EST/EDT
  • 01:00 - 01:45 PST/PDT

James Randall

Recreating Wolfenstein 3D in F#

How to recreate a classic ’90s game using .NET and F# using the same techniques (an actual rasterized ray caster – it's all pixels!) to run natively in both the desktop and the browser.

How to recreate a classic ’90s game using .NET and F# using the same techniques (an actual rasterized ray caster – it's all pixels!) to run natively in both the desktop and the browser.

Recreating Wolfenstein 3D in F#

Advanced

James Randall

How to recreate a classic ’90s game using .NET and F# using the same techniques (an actual rasterized ray caster – it's all pixels!) to run natively in both the desktop and the browser.

How to recreate a classic ’90s game using .NET and F# using the same techniques (an actual rasterized ray caster – it's all pixels!) to run natively in both the desktop and the browser.

F#
  • 11:00 - 12:00 CET/CEST
  • 05:00 - 06:00 EST/EDT
  • 02:00 - 03:00 PST/PDT

Laila Bougria

How to Effectively Spy on Your Systems

OpenTelemetry has quickly become the go-to industry standard for distributed tracing, logging, and metrics. Its widespread adoption across the industry, including the .NET ecosystem, has made it a breeze to use in your applications. However, larger, more complex systems introduce challenges that require us to strengthen our understanding of observability, align on our observability goals, and better understand the full capabilities of the OpenTelemetry project.
We need to understand how to choose the right observability signal for each use case, apply a set of best practices to the telemetry we collect, manage costs through different sampling strategies, and select the optimal architecture by leveraging the OpenTelemetry Collector. In this session, you'll learn the right questions to ask and gain a deeper understanding of the available options in the observability space to become more effective in spying on your systems!

OpenTelemetry has quickly become the go-to industry standard for distributed tracing, logging, and metrics. Its widespread adoption across the industry, including the .NET ecosystem, has made it a breeze to use in your applications. However, larger, more complex systems introduce challenges that require us to strengthen our understanding of observability, align on our observability goals, and better understand the full capabilities of the OpenTelemetry project.
We need to understand how to choose the right observability signal for each use case, apply a set of best practices to the telemetry we collect, manage costs through different sampling strategies, and select the optimal architecture by leveraging the OpenTelemetry Collector. In this session, you'll learn the right questions to ask and gain a deeper understanding of the available options in the observability space to become more effective in spying on your systems!

How to Effectively Spy on Your Systems

Intermediate

Laila Bougria

OpenTelemetry has quickly become the go-to industry standard for distributed tracing, logging, and metrics. Its widespread adoption across the industry, including the .NET ecosystem, has made it a breeze to use in your applications. However, larger, more complex systems introduce challenges that require us to strengthen our understanding of observability, align on our observability goals, and better understand the full capabilities of the OpenTelemetry project.
We need to understand how to choose the right observability signal for each use case, apply a set of best practices to the telemetry we collect, manage costs through different sampling strategies, and select the optimal architecture by leveraging the OpenTelemetry Collector. In this session, you'll learn the right questions to ask and gain a deeper understanding of the available options in the observability space to become more effective in spying on your systems!

OpenTelemetry has quickly become the go-to industry standard for distributed tracing, logging, and metrics. Its widespread adoption across the industry, including the .NET ecosystem, has made it a breeze to use in your applications. However, larger, more complex systems introduce challenges that require us to strengthen our understanding of observability, align on our observability goals, and better understand the full capabilities of the OpenTelemetry project.
We need to understand how to choose the right observability signal for each use case, apply a set of best practices to the telemetry we collect, manage costs through different sampling strategies, and select the optimal architecture by leveraging the OpenTelemetry Collector. In this session, you'll learn the right questions to ask and gain a deeper understanding of the available options in the observability space to become more effective in spying on your systems!

ObservabilityOpenTelemetry
  • 12:15 - 13:15 CET/CEST
  • 06:15 - 07:15 EST/EDT
  • 03:15 - 04:15 PST/PDT

Denis Ekart

Automating Observability With Roslyn Source Generators

Collecting logs, traces, and metrics in .NET applications has become a breeze recently. With support for automatic instrumentation and an increasing number of libraries starting to generate telemetry signals, it's easier than ever to build observable software.
Manually instrumenting your existing software can be a pain, though. Instead of spending valuable time on this, what if we let the Roslyn compiler do it for us?
Join Denis in a fun coding session, where we will automate the process of instrumenting our codebase using Roslyn source generators. We will implement a well-known structural design pattern using incremental source generators and a sprinkle of OpenTelemetry.

Collecting logs, traces, and metrics in .NET applications has become a breeze recently. With support for automatic instrumentation and an increasing number of libraries starting to generate telemetry signals, it's easier than ever to build observable software.
Manually instrumenting your existing software can be a pain, though. Instead of spending valuable time on this, what if we let the Roslyn compiler do it for us?
Join Denis in a fun coding session, where we will automate the process of instrumenting our codebase using Roslyn source generators. We will implement a well-known structural design pattern using incremental source generators and a sprinkle of OpenTelemetry.

Automating Observability With Roslyn Source Generators

Advanced

Denis Ekart

Collecting logs, traces, and metrics in .NET applications has become a breeze recently. With support for automatic instrumentation and an increasing number of libraries starting to generate telemetry signals, it's easier than ever to build observable software.
Manually instrumenting your existing software can be a pain, though. Instead of spending valuable time on this, what if we let the Roslyn compiler do it for us?
Join Denis in a fun coding session, where we will automate the process of instrumenting our codebase using Roslyn source generators. We will implement a well-known structural design pattern using incremental source generators and a sprinkle of OpenTelemetry.

Collecting logs, traces, and metrics in .NET applications has become a breeze recently. With support for automatic instrumentation and an increasing number of libraries starting to generate telemetry signals, it's easier than ever to build observable software.
Manually instrumenting your existing software can be a pain, though. Instead of spending valuable time on this, what if we let the Roslyn compiler do it for us?
Join Denis in a fun coding session, where we will automate the process of instrumenting our codebase using Roslyn source generators. We will implement a well-known structural design pattern using incremental source generators and a sprinkle of OpenTelemetry.

ObservabilityOpenTelemetrySource GeneratorsRoslyn
  • 13:30 - 14:15 CET/CEST
  • 07:30 - 08:15 EST/EDT
  • 04:30 - 05:15 PST/PDT

Giorgi Dalakishvili

Beyond Relational With Entity Framework

Entity Framework Core is great for performing crud operations, but did you know you can also go beyond basic relational queries? For example, do you need to store and query unstructured data in JSON documents? Do you have hierarchical data that you wish to query with EF Core? Are you required to keep historical information about data that has been modified or maybe even deleted? If you answered "Yes" to any of the above questions, this is the talk you do not want to miss.
In this session, you will see how to achieve the above goals with EF Core. Specifically, I will step through and show how you can use EF Core for JSON documents, how to use temporal tables to keep the complete history of your data and query hierarchical data with EF Core 8.
Developers working with EF Core will learn to store data in JSON columns and how easily they can drill into the JSON data with familiar LINQ query syntax. You will see how to filter and sort results based on elements of the JSON document, project elements from JSON, and even update the JSON document. Furthermore, you will see how temporal tables can store all the historical data and how straightforward it is to query for historical records with EF Core. Finally, I will show how to query hierarchical data with the upcoming version of EF Core 8. Join me for a demo-rich session and learn about EF Core features that you will be able to apply right after the session.

Entity Framework Core is great for performing crud operations, but did you know you can also go beyond basic relational queries? For example, do you need to store and query unstructured data in JSON documents? Do you have hierarchical data that you wish to query with EF Core? Are you required to keep historical information about data that has been modified or maybe even deleted? If you answered "Yes" to any of the above questions, this is the talk you do not want to miss.
In this session, you will see how to achieve the above goals with EF Core. Specifically, I will step through and show how you can use EF Core for JSON documents, how to use temporal tables to keep the complete history of your data and query hierarchical data with EF Core 8.
Developers working with EF Core will learn to store data in JSON columns and how easily they can drill into the JSON data with familiar LINQ query syntax. You will see how to filter and sort results based on elements of the JSON document, project elements from JSON, and even update the JSON document. Furthermore, you will see how temporal tables can store all the historical data and how straightforward it is to query for historical records with EF Core. Finally, I will show how to query hierarchical data with the upcoming version of EF Core 8. Join me for a demo-rich session and learn about EF Core features that you will be able to apply right after the session.

Beyond Relational With Entity Framework

Advanced

Giorgi Dalakishvili

Entity Framework Core is great for performing crud operations, but did you know you can also go beyond basic relational queries? For example, do you need to store and query unstructured data in JSON documents? Do you have hierarchical data that you wish to query with EF Core? Are you required to keep historical information about data that has been modified or maybe even deleted? If you answered "Yes" to any of the above questions, this is the talk you do not want to miss.
In this session, you will see how to achieve the above goals with EF Core. Specifically, I will step through and show how you can use EF Core for JSON documents, how to use temporal tables to keep the complete history of your data and query hierarchical data with EF Core 8.
Developers working with EF Core will learn to store data in JSON columns and how easily they can drill into the JSON data with familiar LINQ query syntax. You will see how to filter and sort results based on elements of the JSON document, project elements from JSON, and even update the JSON document. Furthermore, you will see how temporal tables can store all the historical data and how straightforward it is to query for historical records with EF Core. Finally, I will show how to query hierarchical data with the upcoming version of EF Core 8. Join me for a demo-rich session and learn about EF Core features that you will be able to apply right after the session.

Entity Framework Core is great for performing crud operations, but did you know you can also go beyond basic relational queries? For example, do you need to store and query unstructured data in JSON documents? Do you have hierarchical data that you wish to query with EF Core? Are you required to keep historical information about data that has been modified or maybe even deleted? If you answered "Yes" to any of the above questions, this is the talk you do not want to miss.
In this session, you will see how to achieve the above goals with EF Core. Specifically, I will step through and show how you can use EF Core for JSON documents, how to use temporal tables to keep the complete history of your data and query hierarchical data with EF Core 8.
Developers working with EF Core will learn to store data in JSON columns and how easily they can drill into the JSON data with familiar LINQ query syntax. You will see how to filter and sort results based on elements of the JSON document, project elements from JSON, and even update the JSON document. Furthermore, you will see how temporal tables can store all the historical data and how straightforward it is to query for historical records with EF Core. Finally, I will show how to query hierarchical data with the upcoming version of EF Core 8. Join me for a demo-rich session and learn about EF Core features that you will be able to apply right after the session.

Entity Framework CoreJSON
  • 14:30 - 15:30 CET/CEST
  • 08:30 - 09:30 EST/EDT
  • 05:30 - 06:30 PST/PDT

Layla Porter

Understanding Microservices: A Guide For the Monolithic Developer

Microservice Architecture has been thoroughly discussed, as have the reasons why you should move to it (and why you shouldn’t). If you have already decided to move over to microservices from monolithic development, then you may find the whole process a bit daunting. What aspects should you, as a developer, be concerned with? What does all the terminology mean? How do the services talk to each other?
In this session, I’ll show you how to get started with microservice architecture, answering these and many other questions. We'll look at The Tacky Tacos project, built with ASP.NET 6, and explore how the whole process fits together from a development point of view.
Hopefully, you'll leave the session with the confidence to start your own microservices application development straight away!

Microservice Architecture has been thoroughly discussed, as have the reasons why you should move to it (and why you shouldn’t). If you have already decided to move over to microservices from monolithic development, then you may find the whole process a bit daunting. What aspects should you, as a developer, be concerned with? What does all the terminology mean? How do the services talk to each other?
In this session, I’ll show you how to get started with microservice architecture, answering these and many other questions. We'll look at The Tacky Tacos project, built with ASP.NET 6, and explore how the whole process fits together from a development point of view.
Hopefully, you'll leave the session with the confidence to start your own microservices application development straight away!

Understanding Microservices: A Guide For the Monolithic Developer

Intermediate

Layla Porter

Microservice Architecture has been thoroughly discussed, as have the reasons why you should move to it (and why you shouldn’t). If you have already decided to move over to microservices from monolithic development, then you may find the whole process a bit daunting. What aspects should you, as a developer, be concerned with? What does all the terminology mean? How do the services talk to each other?
In this session, I’ll show you how to get started with microservice architecture, answering these and many other questions. We'll look at The Tacky Tacos project, built with ASP.NET 6, and explore how the whole process fits together from a development point of view.
Hopefully, you'll leave the session with the confidence to start your own microservices application development straight away!

Microservice Architecture has been thoroughly discussed, as have the reasons why you should move to it (and why you shouldn’t). If you have already decided to move over to microservices from monolithic development, then you may find the whole process a bit daunting. What aspects should you, as a developer, be concerned with? What does all the terminology mean? How do the services talk to each other?
In this session, I’ll show you how to get started with microservice architecture, answering these and many other questions. We'll look at The Tacky Tacos project, built with ASP.NET 6, and explore how the whole process fits together from a development point of view.
Hopefully, you'll leave the session with the confidence to start your own microservices application development straight away!

Microservices
  • 15:45 - 16:30 CET/CEST
  • 09:45 - 10:30 EST/EDT
  • 06:45 - 07:30 PST/PDT

Mike James

Unleashing the Power of Cross-Platform Development With Avalonia UI and JetBrains Rider

Join Mike as he delves into the exciting world of cross-platform .NET development, powered by Avalonia UI and JetBrains Rider! This session will demonstrate how Avalonia UI enables you to create sleek, modern applications that run seamlessly across Windows, macOS, Linux, iOS, Android, and WebAssembly. After discussing Avalonia UI, Mike will showcase how to revitalize legacy WPF applications and bring them to life on macOS and Linux using Avalonia XPF and JetBrains Rider!
Whether you're an experienced .NET developer or just starting your journey, this session is your ticket to embracing the future of cross-platform development.

Join Mike as he delves into the exciting world of cross-platform .NET development, powered by Avalonia UI and JetBrains Rider! This session will demonstrate how Avalonia UI enables you to create sleek, modern applications that run seamlessly across Windows, macOS, Linux, iOS, Android, and WebAssembly. After discussing Avalonia UI, Mike will showcase how to revitalize legacy WPF applications and bring them to life on macOS and Linux using Avalonia XPF and JetBrains Rider!
Whether you're an experienced .NET developer or just starting your journey, this session is your ticket to embracing the future of cross-platform development.

Unleashing the Power of Cross-Platform Development With Avalonia UI and JetBrains Rider

Introductory and overview

Mike James

Join Mike as he delves into the exciting world of cross-platform .NET development, powered by Avalonia UI and JetBrains Rider! This session will demonstrate how Avalonia UI enables you to create sleek, modern applications that run seamlessly across Windows, macOS, Linux, iOS, Android, and WebAssembly. After discussing Avalonia UI, Mike will showcase how to revitalize legacy WPF applications and bring them to life on macOS and Linux using Avalonia XPF and JetBrains Rider!
Whether you're an experienced .NET developer or just starting your journey, this session is your ticket to embracing the future of cross-platform development.

Join Mike as he delves into the exciting world of cross-platform .NET development, powered by Avalonia UI and JetBrains Rider! This session will demonstrate how Avalonia UI enables you to create sleek, modern applications that run seamlessly across Windows, macOS, Linux, iOS, Android, and WebAssembly. After discussing Avalonia UI, Mike will showcase how to revitalize legacy WPF applications and bring them to life on macOS and Linux using Avalonia XPF and JetBrains Rider!
Whether you're an experienced .NET developer or just starting your journey, this session is your ticket to embracing the future of cross-platform development.

AvaloniaJetBrains RiderCross-platform developmentWebAssemblyWPF
  • 16:45 - 17:45 CET/CEST
  • 10:45 - 11:45 EST/EDT
  • 07:45 - 08:45 PST/PDT

Andrii Rublov

Hidden Difficulties of Debugger Implementation for .NET WASM Apps

Debug infrastructure implementation for .NET (Blazor) WebAssembly apps is challenging due to its unique execution environment. In this talk, we will dive deep into the hidden difficulties of debugger IDE frontend implementation for .NET WASM apps.
We'll start with an overview of the Blazor WASM app execution anatomy, reviewing Debug Proxy. We will then compare regular .NET debugging with Blazor debugging and introduce Rider Debugging Infrastructure. Next, we'll discuss the steps involved in debug session initialization, including how the CDP (Chrome DevTools Protocol) is used. We will also cover breakpoints and evaluation. Finally, we will have a brief discussion about hot-reload, how it works, and how it is supported from the IDE side.
This talk is essential for .NET developers working with Blazor WASM and anyone interested in understanding the complexities of debugging .NET WASM applications.

Debug infrastructure implementation for .NET (Blazor) WebAssembly apps is challenging due to its unique execution environment. In this talk, we will dive deep into the hidden difficulties of debugger IDE frontend implementation for .NET WASM apps.
We'll start with an overview of the Blazor WASM app execution anatomy, reviewing Debug Proxy. We will then compare regular .NET debugging with Blazor debugging and introduce Rider Debugging Infrastructure. Next, we'll discuss the steps involved in debug session initialization, including how the CDP (Chrome DevTools Protocol) is used. We will also cover breakpoints and evaluation. Finally, we will have a brief discussion about hot-reload, how it works, and how it is supported from the IDE side.
This talk is essential for .NET developers working with Blazor WASM and anyone interested in understanding the complexities of debugging .NET WASM applications.

Hidden Difficulties of Debugger Implementation for .NET WASM Apps

Advanced

Andrii Rublov

Debug infrastructure implementation for .NET (Blazor) WebAssembly apps is challenging due to its unique execution environment. In this talk, we will dive deep into the hidden difficulties of debugger IDE frontend implementation for .NET WASM apps.
We'll start with an overview of the Blazor WASM app execution anatomy, reviewing Debug Proxy. We will then compare regular .NET debugging with Blazor debugging and introduce Rider Debugging Infrastructure. Next, we'll discuss the steps involved in debug session initialization, including how the CDP (Chrome DevTools Protocol) is used. We will also cover breakpoints and evaluation. Finally, we will have a brief discussion about hot-reload, how it works, and how it is supported from the IDE side.
This talk is essential for .NET developers working with Blazor WASM and anyone interested in understanding the complexities of debugging .NET WASM applications.

Debug infrastructure implementation for .NET (Blazor) WebAssembly apps is challenging due to its unique execution environment. In this talk, we will dive deep into the hidden difficulties of debugger IDE frontend implementation for .NET WASM apps.
We'll start with an overview of the Blazor WASM app execution anatomy, reviewing Debug Proxy. We will then compare regular .NET debugging with Blazor debugging and introduce Rider Debugging Infrastructure. Next, we'll discuss the steps involved in debug session initialization, including how the CDP (Chrome DevTools Protocol) is used. We will also cover breakpoints and evaluation. Finally, we will have a brief discussion about hot-reload, how it works, and how it is supported from the IDE side.
This talk is essential for .NET developers working with Blazor WASM and anyone interested in understanding the complexities of debugging .NET WASM applications.

BlazorWebAssembly
  • 18:00 - 19:00 CET/CEST
  • 12:00 - 13:00 EST/EDT
  • 09:00 - 10:00 PST/PDT

Ian Griffiths

High Performance JSON Serialization With Code Generation on C# 11 and .NET 7.0

In this talk, you will see how features added to recent versions of C# can dramatically improve parsing and generation of JSON data compared with longer-established .NET JSON handling mechanisms. You will see how to use high-performance memory-efficient techniques, and also how code generators can reduce runtime overheads. This talk will explore the tradeoff between maximizing performance and ease of use and will show you how to choose between the various options now available in modern .NET applications.

In this talk, you will see how features added to recent versions of C# can dramatically improve parsing and generation of JSON data compared with longer-established .NET JSON handling mechanisms. You will see how to use high-performance memory-efficient techniques, and also how code generators can reduce runtime overheads. This talk will explore the tradeoff between maximizing performance and ease of use and will show you how to choose between the various options now available in modern .NET applications.

High Performance JSON Serialization With Code Generation on C# 11 and .NET 7.0

Advanced

Ian Griffiths

In this talk, you will see how features added to recent versions of C# can dramatically improve parsing and generation of JSON data compared with longer-established .NET JSON handling mechanisms. You will see how to use high-performance memory-efficient techniques, and also how code generators can reduce runtime overheads. This talk will explore the tradeoff between maximizing performance and ease of use and will show you how to choose between the various options now available in modern .NET applications.

In this talk, you will see how features added to recent versions of C# can dramatically improve parsing and generation of JSON data compared with longer-established .NET JSON handling mechanisms. You will see how to use high-performance memory-efficient techniques, and also how code generators can reduce runtime overheads. This talk will explore the tradeoff between maximizing performance and ease of use and will show you how to choose between the various options now available in modern .NET applications.

JSONC# 11
  • 19:15 - 20:15 CET/CEST
  • 13:15 - 14:15 EST/EDT
  • 10:15 - 11:15 PST/PDT

Matthew Crews

The Fastest .NET Dictionary… With F#

Learn what it takes to write the fastest Dictionary for .NET. Faster than the .NET Dictionary, faster than FrozenDictionary. You will learn how to use BenchmarkDotNet, dotTrace, and vTune to tune the most performance critical pieces of code and write optimized data structures in .NET. Whether you write C#, VB.NET, or F# you will learn how to extract the maximum performance from .NET.

Learn what it takes to write the fastest Dictionary for .NET. Faster than the .NET Dictionary, faster than FrozenDictionary. You will learn how to use BenchmarkDotNet, dotTrace, and vTune to tune the most performance critical pieces of code and write optimized data structures in .NET. Whether you write C#, VB.NET, or F# you will learn how to extract the maximum performance from .NET.

The Fastest .NET Dictionary… With F#

Intermediate

Matthew Crews

Learn what it takes to write the fastest Dictionary for .NET. Faster than the .NET Dictionary, faster than FrozenDictionary. You will learn how to use BenchmarkDotNet, dotTrace, and vTune to tune the most performance critical pieces of code and write optimized data structures in .NET. Whether you write C#, VB.NET, or F# you will learn how to extract the maximum performance from .NET.

Learn what it takes to write the fastest Dictionary for .NET. Faster than the .NET Dictionary, faster than FrozenDictionary. You will learn how to use BenchmarkDotNet, dotTrace, and vTune to tune the most performance critical pieces of code and write optimized data structures in .NET. Whether you write C#, VB.NET, or F# you will learn how to extract the maximum performance from .NET.

F#BenchmarkDotNetdotTracevTune
  • 20:30 - 21:00 CET/CEST
  • 14:30 - 15:00 EST/EDT
  • 11:30 - 12:00 PST/PDT

Daniel Ward

xUnit Expanded – Better Testing With xUnit

xUnit is one of the most-used testing tools for C#, yet its full capability often goes underutilized. Unfortunately, there isn't much guidance or documentation for developers in terms of what libraries to use with xUnit or some of the more uncommon functionality of xUnit itself, keeping much of its use limited to the realm of learned experience. This talk will cover some xUnit tips and tricks that come from just that: learned experience. You'll learn how to make tests easier to write and more robust, as well as other helpful libraries that can be used in tandem with xUnit to unlock its full potential.

xUnit is one of the most-used testing tools for C#, yet its full capability often goes underutilized. Unfortunately, there isn't much guidance or documentation for developers in terms of what libraries to use with xUnit or some of the more uncommon functionality of xUnit itself, keeping much of its use limited to the realm of learned experience. This talk will cover some xUnit tips and tricks that come from just that: learned experience. You'll learn how to make tests easier to write and more robust, as well as other helpful libraries that can be used in tandem with xUnit to unlock its full potential.

xUnit Expanded – Better Testing With xUnit

Intermediate

Daniel Ward

xUnit is one of the most-used testing tools for C#, yet its full capability often goes underutilized. Unfortunately, there isn't much guidance or documentation for developers in terms of what libraries to use with xUnit or some of the more uncommon functionality of xUnit itself, keeping much of its use limited to the realm of learned experience. This talk will cover some xUnit tips and tricks that come from just that: learned experience. You'll learn how to make tests easier to write and more robust, as well as other helpful libraries that can be used in tandem with xUnit to unlock its full potential.

xUnit is one of the most-used testing tools for C#, yet its full capability often goes underutilized. Unfortunately, there isn't much guidance or documentation for developers in terms of what libraries to use with xUnit or some of the more uncommon functionality of xUnit itself, keeping much of its use limited to the realm of learned experience. This talk will cover some xUnit tips and tricks that come from just that: learned experience. You'll learn how to make tests easier to write and more robust, as well as other helpful libraries that can be used in tandem with xUnit to unlock its full potential.

xUnitUnit testing

Speakers

Andrii Rublov

Software Developer, JetBrains

Daniel Ward

Software Consultant, Lean TECHniques

Denis Ekart

Lead Software Engineer, tretton37

Giorgi Dalakishvili

James Randall

CTO, loves bikes, his dog and doing fun things with code, Blackdot Solutions

Ian Griffiths

Technical Fellow, endjin

Laila Bougria

Software Engineer, Speaker and Knitting Addict, Particular Software

Layla Porter

Live Coder, Microsoft MVP, GitHub Star

Matthew Crews

Mathematical Programming and Optimization With F#

Mike James

A career focused on helping developers build cross-platform apps, Avalonia

FAQ

Registration for .NET Day Online ’23