Skip to content

Commit

Permalink
Merge internal changes from Preview 9 release (#5479)
Browse files Browse the repository at this point in the history
  • Loading branch information
joperezr authored Oct 8, 2024
2 parents 6155a6a + e5bbd33 commit a7e4f3b
Show file tree
Hide file tree
Showing 216 changed files with 21,387 additions and 171 deletions.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
This repository contains a suite of libraries that provide facilities commonly needed when creating production-ready applications. Initially developed to support high-scale and high-availability services within Microsoft, such as Microsoft Teams, these libraries deliver functionality that can help make applications more efficient, more robust, and more manageable.

The major functional areas this repo addresses are:
- AI: Abstractions and middlewares for working with generative AI models and services.
- Compliance: Mechanisms to help manage application data according to privacy regulations and policies, which includes a data annotation framework, audit report generation, and telemetry redaction.
- Diagnostics: Provides a set of APIs that can be used to gather and report diagnostic information about the health of a service.
- Contextual Options: Extends the .NET Options model to enable experimentations in production.
Expand Down
19 changes: 18 additions & 1 deletion build.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,14 @@
#!/usr/bin/env bash

function is_cygwin_or_mingw()
{
case $(uname -s) in
CYGWIN*) return 0;;
MINGW*) return 0;;
*) return 1;;
esac
}

# Stop script if unbound variable found (use ${var:-} if intentional)
set -u

Expand All @@ -16,4 +25,12 @@ then
fi

DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
"$DIR/eng/build.sh" "$@"

if is_cygwin_or_mingw; then
# if bash shell running on Windows (not WSL),
# pass control to powershell build script.
DIR=$(cygpath -d "$DIR")
powershell -c "$DIR\\build.cmd" $@
else
"$DIR/eng/build.sh" $@
fi
8 changes: 8 additions & 0 deletions eng/MSBuild/LegacySupport.props
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
<Project>
<ItemGroup Condition="'$(InjectCompilerFeatureRequiredOnLegacy)' == 'true' AND ('$(TargetFramework)' == 'net462' or '$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'netcoreapp3.1')">
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\LegacySupport\CompilerFeatureRequiredAttribute\*.cs" LinkBase="LegacySupport\CompilerFeatureRequiredAttribute" />
</ItemGroup>

<ItemGroup Condition="'$(InjectRequiredMemberOnLegacy)' == 'true' AND ('$(TargetFramework)' == 'net462' or '$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'netcoreapp3.1')">
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\LegacySupport\RequiredMemberAttribute\*.cs" LinkBase="LegacySupport\RequiredMemberAttribute" />
</ItemGroup>

<ItemGroup Condition="'$(InjectDiagnosticAttributesOnLegacy)' == 'true' AND ('$(TargetFramework)' == 'net462' or '$(TargetFramework)' == 'netstandard2.0' or '$(TargetFramework)' == 'netcoreapp3.1')">
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\LegacySupport\DiagnosticAttributes\*.cs" LinkBase="LegacySupport\DiagnosticAttributes" />
</ItemGroup>
Expand Down
8 changes: 7 additions & 1 deletion eng/MSBuild/ProjectStaging.targets
Original file line number Diff line number Diff line change
@@ -1,8 +1,14 @@
<Project>

<PropertyGroup>
<!-- Preview packages: do not use stable branding and do not warn about lack of [Experimental] -->
<SuppressFinalPackageVersion Condition="'$(Stage)' == 'preview'">true</SuppressFinalPackageVersion>
<NoWarn Condition="'$(Stage)' == 'preview'">$(NoWarn);LA0003</NoWarn>
</PropertyGroup>

<!-- Produce errors if we don't have all the right properties defined -->
<Target Name="_CheckPropsExist" Condition="'$(IsPackable)' == 'true' and '$(Stage)' != '' and $(Stage) != 'transport'" BeforeTargets="Build">
<Error Condition="'$(Stage)' != 'dev' AND '$(Stage)' != 'normal' AND '$(Stage)' != 'obsolete'" Text="Stage property must be dev|normal|obsolete" />
<Error Condition="'$(Stage)' != 'dev' AND '$(Stage)' != 'normal' AND '$(Stage)' != 'obsolete' AND '$(Stage)' != 'preview'" Text="Stage property must be dev|normal|obsolete|preview" />
<Error Condition="'$(Description)' == ''" Text="Missing Description property." />
<Error Condition="'$(Workstream)' == ''" Text="Missing Workstream property." />
<Error Condition="'$(MinCodeCoverage)' == ''" Text="Missing MinCodeCoverage property." />
Expand Down
4 changes: 4 additions & 0 deletions eng/MSBuild/Shared.props
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
<Project>
<ItemGroup Condition="'$(InjectSharedCollectionExtensions)' == 'true'">
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\Shared\CollectionExtensions\*.cs" LinkBase="Shared\CollectionExtensions" />
</ItemGroup>

<ItemGroup Condition="'$(InjectSharedDiagnosticIds)' == 'true'">
<Compile Include="$(MSBuildThisFileDirectory)\..\..\src\Shared\DiagnosticIds\*.cs" LinkBase="Shared\DiagnosticIds" />
</ItemGroup>
Expand Down
262 changes: 139 additions & 123 deletions eng/Version.Details.xml

Large diffs are not rendered by default.

86 changes: 45 additions & 41 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -27,48 +27,52 @@
-->
<PropertyGroup Label="Automated">
<!-- Packages from dotnet/runtime -->
<MicrosoftBclTimeProviderVersion>9.0.0-rtm.24476.4</MicrosoftBclTimeProviderVersion>
<MicrosoftExtensionsCachingAbstractionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsCachingAbstractionsVersion>
<MicrosoftExtensionsCachingMemoryVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsCachingMemoryVersion>
<MicrosoftExtensionsConfigurationAbstractionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsConfigurationAbstractionsVersion>
<MicrosoftExtensionsConfigurationBinderVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationJsonVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsConfigurationJsonVersion>
<MicrosoftExtensionsConfigurationVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsDependencyInjectionAbstractionsVersion>
<MicrosoftExtensionsDependencyInjectionVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsDependencyInjectionVersion>
<MicrosoftExtensionsDiagnosticsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsDiagnosticsVersion>
<MicrosoftExtensionsHostingAbstractionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsHostingAbstractionsVersion>
<MicrosoftExtensionsHostingVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsHostingVersion>
<MicrosoftExtensionsHttpVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsHttpVersion>
<MicrosoftExtensionsLoggingAbstractionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsLoggingAbstractionsVersion>
<MicrosoftExtensionsLoggingConfigurationVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsLoggingConfigurationVersion>
<MicrosoftExtensionsLoggingConsoleVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsLoggingConsoleVersion>
<MicrosoftExtensionsLoggingVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsOptionsConfigurationExtensionsVersion>
<MicrosoftExtensionsOptionsVersion>9.0.0-rtm.24476.4</MicrosoftExtensionsOptionsVersion>
<MicrosoftNETCoreAppRefVersion>9.0.0-rtm.24476.4</MicrosoftNETCoreAppRefVersion>
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.0-rtm.24476.4</MicrosoftNETCoreAppRuntimewinx64Version>
<SystemCollectionsImmutableVersion>9.0.0-rtm.24476.4</SystemCollectionsImmutableVersion>
<SystemConfigurationConfigurationManagerVersion>9.0.0-rtm.24476.4</SystemConfigurationConfigurationManagerVersion>
<SystemDiagnosticsDiagnosticSourceVersion>9.0.0-rtm.24476.4</SystemDiagnosticsDiagnosticSourceVersion>
<SystemDiagnosticsPerformanceCounterVersion>9.0.0-rtm.24476.4</SystemDiagnosticsPerformanceCounterVersion>
<SystemIOHashingVersion>9.0.0-rtm.24476.4</SystemIOHashingVersion>
<SystemIOPipelinesVersion>9.0.0-rtm.24476.4</SystemIOPipelinesVersion>
<SystemRuntimeCachingVersion>9.0.0-rtm.24476.4</SystemRuntimeCachingVersion>
<SystemSecurityCryptographyPkcsVersion>9.0.0-rtm.24476.4</SystemSecurityCryptographyPkcsVersion>
<SystemSecurityCryptographyXmlVersion>9.0.0-rtm.24476.4</SystemSecurityCryptographyXmlVersion>
<SystemTextEncodingsWebVersion>9.0.0-rtm.24476.4</SystemTextEncodingsWebVersion>
<SystemTextJsonVersion>9.0.0-rtm.24476.4</SystemTextJsonVersion>
<MicrosoftBclAsyncInterfaces>9.0.0-rc.2.24473.5</MicrosoftBclAsyncInterfaces>
<MicrosoftBclTimeProviderVersion>9.0.0-rc.2.24473.5</MicrosoftBclTimeProviderVersion>
<MicrosoftExtensionsCachingAbstractionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsCachingAbstractionsVersion>
<MicrosoftExtensionsCachingMemoryVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsCachingMemoryVersion>
<MicrosoftExtensionsConfigurationAbstractionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsConfigurationAbstractionsVersion>
<MicrosoftExtensionsConfigurationBinderVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsConfigurationBinderVersion>
<MicrosoftExtensionsConfigurationJsonVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsConfigurationJsonVersion>
<MicrosoftExtensionsConfigurationVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsConfigurationVersion>
<MicrosoftExtensionsDependencyInjectionAbstractionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsDependencyInjectionAbstractionsVersion>
<MicrosoftExtensionsDependencyInjectionVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsDependencyInjectionVersion>
<MicrosoftExtensionsDiagnosticsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsDiagnosticsVersion>
<MicrosoftExtensionsHostingAbstractionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsHostingAbstractionsVersion>
<MicrosoftExtensionsHostingVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsHostingVersion>
<MicrosoftExtensionsHttpVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsHttpVersion>
<MicrosoftExtensionsLoggingAbstractionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsLoggingAbstractionsVersion>
<MicrosoftExtensionsLoggingConfigurationVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsLoggingConfigurationVersion>
<MicrosoftExtensionsLoggingConsoleVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsLoggingConsoleVersion>
<MicrosoftExtensionsLoggingVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsLoggingVersion>
<MicrosoftExtensionsOptionsConfigurationExtensionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsOptionsConfigurationExtensionsVersion>
<MicrosoftExtensionsOptionsVersion>9.0.0-rc.2.24473.5</MicrosoftExtensionsOptionsVersion>
<MicrosoftNETCoreAppRefVersion>9.0.0-rc.2.24473.5</MicrosoftNETCoreAppRefVersion>
<MicrosoftNETCoreAppRuntimewinx64Version>9.0.0-rc.2.24473.5</MicrosoftNETCoreAppRuntimewinx64Version>
<SystemCollectionsImmutableVersion>9.0.0-rc.2.24473.5</SystemCollectionsImmutableVersion>
<SystemConfigurationConfigurationManagerVersion>9.0.0-rc.2.24473.5</SystemConfigurationConfigurationManagerVersion>
<SystemDiagnosticsDiagnosticSourceVersion>9.0.0-rc.2.24473.5</SystemDiagnosticsDiagnosticSourceVersion>
<SystemDiagnosticsPerformanceCounterVersion>9.0.0-rc.2.24473.5</SystemDiagnosticsPerformanceCounterVersion>
<SystemIOHashingVersion>9.0.0-rc.2.24473.5</SystemIOHashingVersion>
<SystemIOPipelinesVersion>9.0.0-rc.2.24473.5</SystemIOPipelinesVersion>
<SystemMemoryDataVersion>9.0.0-rc.2.24473.5</SystemMemoryDataVersion>
<SystemNetHttpJsonVersion>9.0.0-rc.2.24473.5</SystemNetHttpJsonVersion>
<SystemRuntimeCachingVersion>9.0.0-rc.2.24473.5</SystemRuntimeCachingVersion>
<SystemSecurityCryptographyPkcsVersion>9.0.0-rc.2.24473.5</SystemSecurityCryptographyPkcsVersion>
<SystemSecurityCryptographyXmlVersion>9.0.0-rc.2.24473.5</SystemSecurityCryptographyXmlVersion>
<SystemTextEncodingsWebVersion>9.0.0-rc.2.24473.5</SystemTextEncodingsWebVersion>
<SystemTextJsonVersion>9.0.0-rc.2.24473.5</SystemTextJsonVersion>
<SystemNumericsTensorsVersion>9.0.0-rc.2.24473.5</SystemNumericsTensorsVersion>
<!-- Dependencies from https://github.com/aspnet/AspNetCore -->
<MicrosoftAspNetCoreAppRefVersion>9.0.0-rtm.24507.7</MicrosoftAspNetCoreAppRefVersion>
<MicrosoftAspNetCoreAppRuntimewinx64Version>9.0.0-rtm.24507.7</MicrosoftAspNetCoreAppRuntimewinx64Version>
<MicrosoftAspNetCoreMvcTestingVersion>9.0.0-rtm.24507.7</MicrosoftAspNetCoreMvcTestingVersion>
<MicrosoftAspNetCoreTestHostVersion>9.0.0-rtm.24507.7</MicrosoftAspNetCoreTestHostVersion>
<MicrosoftExtensionsCachingSqlServerVersion>9.0.0-rtm.24507.7</MicrosoftExtensionsCachingSqlServerVersion>
<MicrosoftExtensionsCachingStackExchangeRedisVersion>9.0.0-rtm.24507.7</MicrosoftExtensionsCachingStackExchangeRedisVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksVersion>9.0.0-rtm.24507.7</MicrosoftExtensionsDiagnosticsHealthChecksVersion>
<MicrosoftExtensionsHttpPollyVersion>9.0.0-rtm.24507.7</MicrosoftExtensionsHttpPollyVersion>
<MicrosoftExtensionsObjectPoolVersion>9.0.0-rtm.24507.7</MicrosoftExtensionsObjectPoolVersion>
<MicrosoftAspNetCoreAppRefVersion>9.0.0-rc.2.24474.3</MicrosoftAspNetCoreAppRefVersion>
<MicrosoftAspNetCoreAppRuntimewinx64Version>9.0.0-rc.2.24474.3</MicrosoftAspNetCoreAppRuntimewinx64Version>
<MicrosoftAspNetCoreMvcTestingVersion>9.0.0-rc.2.24474.3</MicrosoftAspNetCoreMvcTestingVersion>
<MicrosoftAspNetCoreTestHostVersion>9.0.0-rc.2.24474.3</MicrosoftAspNetCoreTestHostVersion>
<MicrosoftExtensionsCachingSqlServerVersion>9.0.0-rc.2.24474.3</MicrosoftExtensionsCachingSqlServerVersion>
<MicrosoftExtensionsCachingStackExchangeRedisVersion>9.0.0-rc.2.24474.3</MicrosoftExtensionsCachingStackExchangeRedisVersion>
<MicrosoftExtensionsDiagnosticsHealthChecksVersion>9.0.0-rc.2.24474.3</MicrosoftExtensionsDiagnosticsHealthChecksVersion>
<MicrosoftExtensionsHttpPollyVersion>9.0.0-rc.2.24474.3</MicrosoftExtensionsHttpPollyVersion>
<MicrosoftExtensionsObjectPoolVersion>9.0.0-rc.2.24474.3</MicrosoftExtensionsObjectPoolVersion>
</PropertyGroup>
<!--
Expand Down
6 changes: 6 additions & 0 deletions eng/packages/General.props
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PackageVersion Include="Azure.AI.Inference" Version="1.0.0-beta.1" />
<PackageVersion Include="ICSharpCode.Decompiler" Version="8.2.0.7535" />
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="$(MicrosoftBclAsyncInterfaces)" />
<PackageVersion Include="Microsoft.Bcl.HashCode" Version="1.1.1" />
<PackageVersion Include="Microsoft.Bcl.TimeProvider" Version="$(MicrosoftBclTimeProviderVersion)" />
<PackageVersion Include="Microsoft.CodeAnalysis.Analyzers" Version="$(MicrosoftCodeAnalysisAnalyzersVersion)" />
Expand Down Expand Up @@ -33,6 +35,7 @@
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsOptionsVersion)" />
<PackageVersion Include="Microsoft.IO.RecyclableMemoryStream" Version="3.0.0" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="OpenAI" Version="2.0.0" />
<PackageVersion Include="Polly" Version="8.4.2" />
<PackageVersion Include="Polly.Core" Version="8.4.2" />
<PackageVersion Include="Polly.Extensions" Version="8.4.2" />
Expand All @@ -47,9 +50,12 @@
<PackageVersion Include="System.IO.Hashing" Version="$(SystemIOHashingVersion)" />
<PackageVersion Include="System.IO.Pipelines" Version="$(SystemIOPipelinesVersion)" />
<PackageVersion Include="System.Memory" Version="4.5.5" />
<PackageVersion Include="System.Memory.Data" Version="$(SystemMemoryDataVersion)" />
<PackageVersion Include="System.Net.Http.Json" Version="$(SystemNetHttpJsonVersion)" />
<PackageVersion Include="System.Private.Uri" Version="4.3.2" />
<PackageVersion Include="System.Runtime.CompilerServices.Unsafe" Version="6.0.0" />
<PackageVersion Include="System.Text.Json" Version="$(SystemTextJsonVersion)" />
<PackageVersion Include="System.Text.Encodings.Web" Version="$(SystemTextEncodingsWebVersion)" />
<PackageVersion Include="System.Threading.Tasks.Extensions" Version="4.5.4" />
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
<PackageVersion Include="YamlDotNet" Version="12.3.1" />
Expand Down
4 changes: 4 additions & 0 deletions eng/packages/TestOnly.props
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,21 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<PackageVersion Include="AutoFixture.AutoMoq" Version="4.17.0" />
<PackageVersion Include="Azure.AI.OpenAI" Version="2.0.0" />
<PackageVersion Include="autofixture" Version="4.17.0" />
<PackageVersion Include="BenchmarkDotNet" Version="0.13.5" />
<PackageVersion Include="FluentAssertions" Version="6.11.0" />
<PackageVersion Include="Grpc.AspNetCore" Version="2.65.0" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.2.2" />
<PackageVersion Include="Microsoft.Diagnostics.Tracing.TraceEvent" Version="3.1.3" />
<PackageVersion Include="Microsoft.ML.Tokenizers" Version="0.22.0-preview.24378.1" />
<PackageVersion Include="Moq.AutoMock" Version="3.1.0" />
<PackageVersion Include="Moq" Version="4.18.4" />
<PackageVersion Include="OpenTelemetry.Exporter.InMemory" Version="1.9.0" />
<PackageVersion Include="Polly.Testing" Version="8.4.2" />
<PackageVersion Include="StrongNamer" Version="0.2.5" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="$(SystemConfigurationConfigurationManagerVersion)" />
<PackageVersion Include="System.Numerics.Tensors" Version="$(SystemNumericsTensorsVersion)" />
<PackageVersion Include="Verify.Xunit" Version="20.4.0" />
<PackageVersion Include="Xunit.Combinatorial" Version="1.6.24" />
<PackageVersion Include="xunit.extensibility.execution" Version="2.4.2" />
Expand Down
4 changes: 2 additions & 2 deletions global.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,11 @@
"runtimes": {
"dotnet/x64": [
"8.0.0",
"$(MicrosoftNETCoreAppRuntimewinx64Version)"
"9.0.0-rc.1.24431.7"
],
"aspnetcore/x64": [
"8.0.0",
"$(MicrosoftAspNetCoreAppRuntimewinx64Version)"
"9.0.0-rc.1.24452.1"
]
}
},
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

#pragma warning disable SA1623 // Property summary documentation should match accessors

namespace System.Runtime.CompilerServices;

/// <summary>
/// Indicates that compiler support for a particular feature is required for the location where this attribute is applied.
/// </summary>
[AttributeUsage(AttributeTargets.All, AllowMultiple = true, Inherited = false)]
internal sealed class CompilerFeatureRequiredAttribute : Attribute
{
public CompilerFeatureRequiredAttribute(string featureName)
{
FeatureName = featureName;
}

/// <summary>
/// The name of the compiler feature.
/// </summary>
public string FeatureName { get; }

/// <summary>
/// If true, the compiler can choose to allow access to the location where this attribute is applied if it does not understand <see cref="FeatureName"/>.
/// </summary>
public bool IsOptional { get; init; }

/// <summary>
/// The <see cref="FeatureName"/> used for the ref structs C# feature.
/// </summary>
public const string RefStructs = nameof(RefStructs);

/// <summary>
/// The <see cref="FeatureName"/> used for the required members C# feature.
/// </summary>
public const string RequiredMembers = nameof(RequiredMembers);
}
9 changes: 9 additions & 0 deletions src/LegacySupport/CompilerFeatureRequiredAttribute/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Enables use of C# required members on older frameworks.

To use this source in your project, add the following to your `.csproj` file:

```xml
<PropertyGroup>
<InjectCompilerFeatureRequiredOnLegacy>true</InjectCompilerFeatureRequiredOnLegacy>
</PropertyGroup>
```
9 changes: 9 additions & 0 deletions src/LegacySupport/RequiredMemberAttribute/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
Enables use of C# required members on older frameworks.

To use this source in your project, add the following to your `.csproj` file:

```xml
<PropertyGroup>
<InjectRequiredMemberOnLegacy>true</InjectRequiredMemberOnLegacy>
</PropertyGroup>
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.

using System.ComponentModel;

namespace System.Runtime.CompilerServices;

/// <summary>Specifies that a type has required members or that a member is required.</summary>
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false, Inherited = false)]
[EditorBrowsable(EditorBrowsableState.Never)]
internal sealed class RequiredMemberAttribute : Attribute;
Loading

0 comments on commit a7e4f3b

Please sign in to comment.