Skip to content

Commit 70708ec

Browse files
committed
fix(build): Resolve MultiTarget framework build errors
1 parent 63ead66 commit 70708ec

File tree

8 files changed

+79
-11
lines changed

8 files changed

+79
-11
lines changed

OpenFeature.sln

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenFeature.DependencyInjec
8383
EndProject
8484
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenFeature.DependencyInjection.Tests", "test\OpenFeature.DependencyInjection.Tests\OpenFeature.DependencyInjection.Tests.csproj", "{EB35F9F6-8A79-410E-A293-9387BC4AC9A7}"
8585
EndProject
86-
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenFeature.Hosting", "src\OpenFeature.Hosting\OpenFeature.Hosting.csproj", "{C99DA02A-3981-45A6-B3F8-4A1A48653DEE}"
86+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenFeature.Hosting", "src\OpenFeature.Hosting\OpenFeature.Hosting.csproj", "{C99DA02A-3981-45A6-B3F8-4A1A48653DEE}"
8787
EndProject
8888
Global
8989
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// @formatter:off
2+
// ReSharper disable All
3+
#if NETCOREAPP3_0_OR_GREATER
4+
// https://github.com/dotnet/runtime/issues/96197
5+
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Runtime.CompilerServices.CallerArgumentExpressionAttribute))]
6+
#else
7+
#pragma warning disable
8+
// Licensed to the .NET Foundation under one or more agreements.
9+
// The .NET Foundation licenses this file to you under the MIT license.
10+
11+
namespace System.Runtime.CompilerServices;
12+
13+
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
14+
internal sealed class CallerArgumentExpressionAttribute : Attribute
15+
{
16+
public CallerArgumentExpressionAttribute(string parameterName)
17+
{
18+
ParameterName = parameterName;
19+
}
20+
21+
public string ParameterName { get; }
22+
}
23+
#endif
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using System.Diagnostics;
2+
using System.Runtime.CompilerServices;
3+
4+
namespace OpenFeature;
5+
6+
[DebuggerStepThrough]
7+
internal static class Guard
8+
{
9+
public static T ThrowIfNull<T>(T? value, [CallerArgumentExpression("value")] string name = null!)
10+
{
11+
#if NET8_0_OR_GREATER
12+
ArgumentNullException.ThrowIfNull(value, name);
13+
#else
14+
if (value is null)
15+
throw new ArgumentNullException(name);
16+
#endif
17+
18+
return value;
19+
}
20+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
// @formatter:off
2+
// ReSharper disable All
3+
#if NET5_0_OR_GREATER
4+
// https://github.com/dotnet/runtime/issues/96197
5+
[assembly: System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Runtime.CompilerServices.IsExternalInit))]
6+
#else
7+
#pragma warning disable
8+
// Licensed to the .NET Foundation under one or more agreements.
9+
// The .NET Foundation licenses this file to you under the MIT license.
10+
11+
using System.ComponentModel;
12+
13+
namespace System.Runtime.CompilerServices;
14+
15+
/// <summary>
16+
/// Reserved to be used by the compiler for tracking metadata.
17+
/// This class should not be used by developers in source code.
18+
/// </summary>
19+
[EditorBrowsable(EditorBrowsableState.Never)]
20+
static class IsExternalInit { }
21+
#endif

src/OpenFeature.DependencyInjection/OpenFeature.DependencyInjection.csproj

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFrameworks>net6.0;net8.0</TargetFrameworks>
4+
<TargetFrameworks>netstandard2.0;net6.0;net8.0;net462</TargetFrameworks>
55
<ImplicitUsings>enable</ImplicitUsings>
66
<Nullable>enable</Nullable>
77
<RootNamespace>OpenFeature</RootNamespace>
@@ -24,4 +24,8 @@
2424
</AssemblyAttribute>
2525
</ItemGroup>
2626

27+
<ItemGroup>
28+
<Folder Include="MultiTarget\" />
29+
</ItemGroup>
30+
2731
</Project>

src/OpenFeature.DependencyInjection/OpenFeatureBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ namespace OpenFeature;
55
/// <summary>
66
/// Describes a <see cref="OpenFeatureBuilder"/> backed by an <see cref="IServiceCollection"/>.
77
/// </summary>
8-
/// <param name="Services"><see cref="IServiceCollection"/></param>
8+
/// <param name="Services">The <see cref="IServiceCollection"/> instance.</param>
99
public sealed record OpenFeatureBuilder(IServiceCollection Services)
1010
{
1111
/// <summary>

src/OpenFeature.DependencyInjection/OpenFeatureBuilderExtensions.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ public static OpenFeatureBuilder AddContext(
1818
this OpenFeatureBuilder builder,
1919
Action<EvaluationContextBuilder> configure)
2020
{
21-
ArgumentNullException.ThrowIfNull(builder);
22-
ArgumentNullException.ThrowIfNull(configure);
21+
Guard.ThrowIfNull(builder);
22+
Guard.ThrowIfNull(configure);
2323

2424
return builder.AddContext((b, _) => configure(b));
2525
}
@@ -34,8 +34,8 @@ public static OpenFeatureBuilder AddContext(
3434
this OpenFeatureBuilder builder,
3535
Action<EvaluationContextBuilder, IServiceProvider> configure)
3636
{
37-
ArgumentNullException.ThrowIfNull(builder);
38-
ArgumentNullException.ThrowIfNull(configure);
37+
Guard.ThrowIfNull(builder);
38+
Guard.ThrowIfNull(configure);
3939

4040
builder.IsContextConfigured = true;
4141
builder.Services.TryAddTransient(provider =>
@@ -58,7 +58,7 @@ public static OpenFeatureBuilder AddContext(
5858
public static OpenFeatureBuilder AddProvider<T>(this OpenFeatureBuilder builder, Func<IServiceProvider, T> providerFactory)
5959
where T : FeatureProvider
6060
{
61-
ArgumentNullException.ThrowIfNull(builder);
61+
Guard.ThrowIfNull(builder);
6262
builder.Services.TryAddSingleton<FeatureProvider>(providerFactory);
6363
return builder;
6464
}

src/OpenFeature.DependencyInjection/OpenFeatureServiceCollectionExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ public static class OpenFeatureServiceCollectionExtensions
1919
/// <returns>the current <see cref="IServiceCollection"/> instance</returns>
2020
public static IServiceCollection AddOpenFeature(this IServiceCollection services, Action<OpenFeatureBuilder> configure)
2121
{
22-
ArgumentNullException.ThrowIfNull(services);
23-
ArgumentNullException.ThrowIfNull(configure);
22+
Guard.ThrowIfNull(services);
23+
Guard.ThrowIfNull(configure);
2424

2525
services.TryAddSingleton(Api.Instance);
2626
services.TryAddSingleton<IFeatureLifecycleManager, FeatureLifecycleManager>();

0 commit comments

Comments
 (0)