Adventures in C#8 - The annotation for nullable reference types should only be used in code within a ‘#nullable’ context.

April 05, 2019

If you’re playing around with C# 8, and have been for a while, you may spot this message when using nullable reference types:

Warning CS8632 The annotation for nullable reference types should only be used in code within a ‘#nullable’ context.

There’s a couple of things you can check to fix this; the first is to check that you are, in fact, using C# 8. It’s likely that you are, because there is a separate error if you are not, but just for my own benefit:



<LangVersion>preview</LangVersion>

The next, and more likely step, is that you’re using the previous declaration for Nullable Reference Types; it used to look like this:



<NullableReferenceTypes>true</NullableReferenceTypes>

But no more! Now it looks like this:



<NullableContextOptions>enable</NullableContextOptions>

And, as if by magic - the error disappears!

But why? Well, it looks like they are making the setting more nuanced than simply on or off.

Update (8/7/2019)

It appears that the NullableContextOptions is now simply: Nullable; e.g.:



  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <LangVersion>8.0</LangVersion>
    <Nullable>enable</Nullable>
  </PropertyGroup>



Profile picture

A blog about one man's journey through code… and some pictures of the Peak District
Twitter

© Paul Michaels 2022