Skip to content

Commit 4269db9

Browse files
[Group 4] Enable nullable annotations for Microsoft.Extensions.Configuration.EnvironmentVariables (#57433)
* Annotate * Add net6 to parent projects * Prefix can be null in AddEnvironmentVariables * DisableImplicitAssemblyReferences * Address PR feedback - Add necessary TFMs - Make configureSource action nullable Co-authored-by: Eric Erhardt <eric.erhardt@microsoft.com>
1 parent 8ae135a commit 4269db9

8 files changed

+37
-19
lines changed

src/libraries/Microsoft.Extensions.Configuration.EnvironmentVariables/ref/Microsoft.Extensions.Configuration.EnvironmentVariables.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,23 +9,23 @@ namespace Microsoft.Extensions.Configuration
99
public static partial class EnvironmentVariablesExtensions
1010
{
1111
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddEnvironmentVariables(this Microsoft.Extensions.Configuration.IConfigurationBuilder configurationBuilder) { throw null; }
12-
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddEnvironmentVariables(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource> configureSource) { throw null; }
13-
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddEnvironmentVariables(this Microsoft.Extensions.Configuration.IConfigurationBuilder configurationBuilder, string prefix) { throw null; }
12+
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddEnvironmentVariables(this Microsoft.Extensions.Configuration.IConfigurationBuilder builder, System.Action<Microsoft.Extensions.Configuration.EnvironmentVariables.EnvironmentVariablesConfigurationSource>? configureSource) { throw null; }
13+
public static Microsoft.Extensions.Configuration.IConfigurationBuilder AddEnvironmentVariables(this Microsoft.Extensions.Configuration.IConfigurationBuilder configurationBuilder, string? prefix) { throw null; }
1414
}
1515
}
1616
namespace Microsoft.Extensions.Configuration.EnvironmentVariables
1717
{
1818
public partial class EnvironmentVariablesConfigurationProvider : Microsoft.Extensions.Configuration.ConfigurationProvider
1919
{
2020
public EnvironmentVariablesConfigurationProvider() { }
21-
public EnvironmentVariablesConfigurationProvider(string prefix) { }
21+
public EnvironmentVariablesConfigurationProvider(string? prefix) { }
2222
public override void Load() { }
2323
public override string ToString() { throw null; }
2424
}
2525
public partial class EnvironmentVariablesConfigurationSource : Microsoft.Extensions.Configuration.IConfigurationSource
2626
{
2727
public EnvironmentVariablesConfigurationSource() { }
28-
public string Prefix { get { throw null; } set { } }
28+
public string? Prefix { get { throw null; } set { } }
2929
public Microsoft.Extensions.Configuration.IConfigurationProvider Build(Microsoft.Extensions.Configuration.IConfigurationBuilder builder) { throw null; }
3030
}
3131
}
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,20 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
3+
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
4+
<Nullable>enable</Nullable>
45
</PropertyGroup>
6+
57
<ItemGroup>
68
<Compile Include="Microsoft.Extensions.Configuration.EnvironmentVariables.cs" />
79
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Configuration\ref\Microsoft.Extensions.Configuration.csproj" />
810
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Configuration.Abstractions\ref\Microsoft.Extensions.Configuration.Abstractions.csproj" />
911
</ItemGroup>
12+
13+
<ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
14+
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\ref\System.Runtime.csproj" />
15+
</ItemGroup>
16+
17+
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(TargetFramework)' != '$(NetCoreAppCurrent)'">
18+
<Reference Include="System.Runtime" />
19+
</ItemGroup>
1020
</Project>

src/libraries/Microsoft.Extensions.Configuration.EnvironmentVariables/src/EnvironmentVariablesConfigurationProvider.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public EnvironmentVariablesConfigurationProvider() =>
2929
/// Initializes a new instance with the specified prefix.
3030
/// </summary>
3131
/// <param name="prefix">A prefix used to filter the environment variables.</param>
32-
public EnvironmentVariablesConfigurationProvider(string prefix) =>
32+
public EnvironmentVariablesConfigurationProvider(string? prefix) =>
3333
_prefix = prefix ?? string.Empty;
3434

3535
/// <summary>
@@ -47,7 +47,7 @@ public override string ToString()
4747

4848
internal void Load(IDictionary envVariables)
4949
{
50-
var data = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
50+
var data = new Dictionary<string, string?>(StringComparer.OrdinalIgnoreCase);
5151

5252
IDictionaryEnumerator e = envVariables.GetEnumerator();
5353
try
@@ -56,7 +56,7 @@ internal void Load(IDictionary envVariables)
5656
{
5757
DictionaryEntry entry = e.Entry;
5858
string key = (string)entry.Key;
59-
string provider = null;
59+
string? provider = null;
6060
string prefix;
6161

6262
if (key.StartsWith(MySqlServerPrefix, StringComparison.OrdinalIgnoreCase))
@@ -94,7 +94,7 @@ internal void Load(IDictionary envVariables)
9494

9595
// Add the key-value pair for connection string, and optionally provider name
9696
key = NormalizeKey(key.Substring(prefix.Length));
97-
AddIfPrefixed(data, $"ConnectionStrings:{key}", (string)entry.Value);
97+
AddIfPrefixed(data, $"ConnectionStrings:{key}", (string?)entry.Value);
9898
if (provider != null)
9999
{
100100
AddIfPrefixed(data, $"ConnectionStrings:{key}_ProviderName", provider);
@@ -109,7 +109,7 @@ internal void Load(IDictionary envVariables)
109109
Data = data;
110110
}
111111

112-
private void AddIfPrefixed(Dictionary<string, string> data, string key, string value)
112+
private void AddIfPrefixed(Dictionary<string, string?> data, string key, string? value)
113113
{
114114
if (key.StartsWith(_prefix, StringComparison.OrdinalIgnoreCase))
115115
{

src/libraries/Microsoft.Extensions.Configuration.EnvironmentVariables/src/EnvironmentVariablesConfigurationSource.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class EnvironmentVariablesConfigurationSource : IConfigurationSource
1111
/// <summary>
1212
/// A prefix used to filter environment variables.
1313
/// </summary>
14-
public string Prefix { get; set; }
14+
public string? Prefix { get; set; }
1515

1616
/// <summary>
1717
/// Builds the <see cref="EnvironmentVariablesConfigurationProvider"/> for this source.

src/libraries/Microsoft.Extensions.Configuration.EnvironmentVariables/src/EnvironmentVariablesExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationB
3131
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
3232
public static IConfigurationBuilder AddEnvironmentVariables(
3333
this IConfigurationBuilder configurationBuilder,
34-
string prefix)
34+
string? prefix)
3535
{
3636
configurationBuilder.Add(new EnvironmentVariablesConfigurationSource { Prefix = prefix });
3737
return configurationBuilder;
@@ -43,7 +43,7 @@ public static IConfigurationBuilder AddEnvironmentVariables(
4343
/// <param name="builder">The <see cref="IConfigurationBuilder"/> to add to.</param>
4444
/// <param name="configureSource">Configures the source.</param>
4545
/// <returns>The <see cref="IConfigurationBuilder"/>.</returns>
46-
public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationBuilder builder, Action<EnvironmentVariablesConfigurationSource> configureSource)
46+
public static IConfigurationBuilder AddEnvironmentVariables(this IConfigurationBuilder builder, Action<EnvironmentVariablesConfigurationSource>? configureSource)
4747
=> builder.Add(configureSource);
4848
}
4949
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
4+
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
5+
<Nullable>enable</Nullable>
56
<EnableDefaultItems>true</EnableDefaultItems>
7+
<!-- Use targeting pack references instead of granular ones in the project file. -->
8+
<DisableImplicitAssemblyReferences>false</DisableImplicitAssemblyReferences>
69
<PackageDescription>Environment variables configuration provider implementation for Microsoft.Extensions.Configuration.</PackageDescription>
710
</PropertyGroup>
811

912
<ItemGroup>
1013
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Configuration\src\Microsoft.Extensions.Configuration.csproj" />
1114
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Configuration.Abstractions\src\Microsoft.Extensions.Configuration.Abstractions.csproj" />
1215
</ItemGroup>
13-
16+
1417
</Project>
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,20 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22
<PropertyGroup>
3-
<TargetFrameworks>$(NetCoreAppCurrent);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
3+
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
44
<Nullable>enable</Nullable>
55
</PropertyGroup>
6+
67
<ItemGroup>
78
<Compile Include="Microsoft.Extensions.Configuration.cs" />
89
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Configuration.Abstractions\ref\Microsoft.Extensions.Configuration.Abstractions.csproj" />
910
<ProjectReference Include="$(LibrariesProjectRoot)Microsoft.Extensions.Primitives\ref\Microsoft.Extensions.Primitives.csproj" />
1011
</ItemGroup>
11-
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
12-
<ProjectReference Include="$(LibrariesProjectRoot)System.Collections\ref\System.Collections.csproj" />
12+
13+
<ItemGroup Condition="'$(TargetFramework)' == '$(NetCoreAppCurrent)'">
1314
<ProjectReference Include="$(LibrariesProjectRoot)System.Runtime\ref\System.Runtime.csproj" />
1415
</ItemGroup>
16+
17+
<ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(TargetFramework)' != '$(NetCoreAppCurrent)'">
18+
<Reference Include="System.Runtime" />
19+
</ItemGroup>
1520
</Project>

src/libraries/Microsoft.Extensions.Configuration/src/Microsoft.Extensions.Configuration.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>$(NetCoreAppCurrent);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
4+
<TargetFrameworks>$(NetCoreAppCurrent);$(NetCoreAppMinimum);netstandard2.0;$(NetFrameworkMinimum)</TargetFrameworks>
55
<Nullable>enable</Nullable>
66
<EnableDefaultItems>true</EnableDefaultItems>
77
<!-- Use targeting pack references instead of granular ones in the project file. -->

0 commit comments

Comments
 (0)