Skip to content

Commit

Permalink
Adds .net 9 support (#4763)
Browse files Browse the repository at this point in the history
  • Loading branch information
brendankowitz authored Jan 23, 2025
1 parent 09128a7 commit e330f77
Show file tree
Hide file tree
Showing 75 changed files with 202 additions and 120 deletions.
6 changes: 6 additions & 0 deletions CustomAnalysisRules.ruleset
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,18 @@
<RuleSet Name="FHIR Analysis Rules" Description="The code analysis rules used for the FHIR server C# source projects." ToolsVersion="17.0">
<Include Path="minimumrecommendedrules.ruleset" Action="Default" />
<Include Path="securityrules.ruleset" Action="Default" />
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
<Rule Id="CA1852" Action="None" />
</Rules>
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
<Rule Id="IDE0003" Action="Warning" />
<Rule Id="IDE0004" Action="Warning" />
<Rule Id="IDE0005" Action="Warning" />
<Rule Id="IDE1005" Action="Warning" />
</Rules>
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.NetAnalyzers" RuleNamespace="Microsoft.CodeAnalysis.CSharp.NetAnalyzers">
<Rule Id="CA1852" Action="None" />
</Rules>
<Rules AnalyzerId="Microsoft.CodeAnalysis.NetAnalyzers" RuleNamespace="Microsoft.CodeAnalysis.NetAnalyzers">
<Rule Id="CA1008" Action="Info" />
<Rule Id="CA1014" Action="Info" />
Expand Down
2 changes: 1 addition & 1 deletion Directory.Build.props
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<RepositoryUrl>https://github.com/microsoft/fhir-server</RepositoryUrl>
<RunSettingsFilePath>$(MSBuildThisFileDirectory)\CodeCoverage.runsettings</RunSettingsFilePath>
<TargetFrameworks>net8.0;net6.0</TargetFrameworks>
<TargetFrameworks>net9.0;net8.0;net6.0</TargetFrameworks>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<WarningsAsErrors />
Expand Down
87 changes: 52 additions & 35 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,10 +1,40 @@
<Project>
<!-- Shared dependencies versions.-->
<PropertyGroup>
<HealthcareSharedPackageVersion>7.1.183</HealthcareSharedPackageVersion>
<HealthcareSharedPackageVersion>8.0.30</HealthcareSharedPackageVersion>
<Hl7FhirVersion>4.3.0</Hl7FhirVersion>
<Hl7FhirVersion>5.4.0</Hl7FhirVersion>
<Hl7FhirLegacyVersion>5.3.0</Hl7FhirLegacyVersion>
</PropertyGroup>
<!-- SDK Packages -->
<Choose>
<When Condition="'$(TargetFramework)' == 'net6.0'">
<PropertyGroup>
<!-- >= 12.2.0 MediatR started depending on 8.x Microsoft.Extension.* libraries -->
<MediatRVersion>12.4.1</MediatRVersion>
<LoggingVersion>8.0.2</LoggingVersion>
<SdkPackageVersion>8.0</SdkPackageVersion>
<AspNetPackageVersion>6.0</AspNetPackageVersion>
</PropertyGroup>
</When>
<When Condition="'$(TargetFramework)' == 'net8.0'">
<PropertyGroup>
<!-- >= 12.2.0 MediatR started depending on 8.x Microsoft.Extension.* libraries -->
<MediatRVersion>12.4.1</MediatRVersion>
<LoggingVersion>8.0.2</LoggingVersion>
<SdkPackageVersion>8.0</SdkPackageVersion>
<AspNetPackageVersion>8.0</AspNetPackageVersion>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<MediatRVersion>12.4.1</MediatRVersion>
<LoggingVersion>9.0.1</LoggingVersion>
<SdkPackageVersion>9.0.0</SdkPackageVersion>
<AspNetPackageVersion>9.0.0</AspNetPackageVersion>
</PropertyGroup>
</Otherwise>
</Choose>
<ItemGroup Label="CVE Mitigation">
<!--Please include the CGA id if possible-->
<PackageVersion Include="System.Security.Cryptography.Xml" Version="8.0.2" />
Expand All @@ -17,22 +47,9 @@
<!-- CVE-2022-26907 -->
<PackageVersion Include="Microsoft.Rest.ClientRuntime" Version="2.3.24" />
</ItemGroup>
<!-- SDK Packages -->
<Choose>
<When Condition="'$(TargetFramework)' == 'net8.0'">
<PropertyGroup>
<AspNetPackageVersion>8.0.0</AspNetPackageVersion>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<AspNetPackageVersion>6.0.23</AspNetPackageVersion>
</PropertyGroup>
</Otherwise>
</Choose>
<ItemGroup>
<PackageVersion Include="AngleSharp" Version="1.1.2" />
<PackageVersion Include="Azure.Identity" Version="1.13.1" />
<PackageVersion Include="Azure.Identity" Version="1.13.2" />
<PackageVersion Include="Azure.ResourceManager.CosmosDB" Version="1.3.2" />
<PackageVersion Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.2" />
<PackageVersion Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.2.0" />
Expand All @@ -59,7 +76,7 @@
<PackageVersion Include="Hl7.Fhir.Specification.R4B" Version="$(Hl7FhirVersion)" />
<PackageVersion Include="Hl7.Fhir.Specification.R5" Version="$(Hl7FhirVersion)" />
<PackageVersion Include="IdentityServer4" Version="4.1.2" />
<PackageVersion Include="MediatR" Version="12.4.1" />
<PackageVersion Include="MediatR" Version="$(MediatRVersion)" />
<PackageVersion Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(AspNetPackageVersion)" />
<PackageVersion Include="Microsoft.AspNetCore.JsonPatch" Version="$(AspNetPackageVersion)" />
Expand All @@ -70,22 +87,23 @@
<PackageVersion Include="Microsoft.Azure.ContainerRegistry" Version="1.0.0-preview.2" />
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.45.2" />
<PackageVersion Include="Microsoft.Azure.Storage.Blob" Version="11.2.3" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="8.0.8" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="8.0.7" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.10" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="8.0.8" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.2.2" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(LoggingVersion)" />
<PackageVersion Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.22.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.10.0" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(SdkPackageVersion)" />
<PackageVersion Include="Microsoft.Health.Abstractions" Version="$(HealthcareSharedPackageVersion)" />
<PackageVersion Include="Microsoft.Health.Api" Version="$(HealthcareSharedPackageVersion)" />
<PackageVersion Include="Microsoft.Health.Client" Version="$(HealthcareSharedPackageVersion)" />
Expand All @@ -105,7 +123,7 @@
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
<PackageVersion Include="Microsoft.SqlServer.DACFx" Version="162.0.52" />
<PackageVersion Include="Microsoft.SqlServer.SqlManagementObjects" Version="171.30.0" />
<PackageVersion Include="Microsoft.SqlServer.SqlManagementObjects" Version="172.52.0" />
<PackageVersion Include="Newtonsoft.Json.Schema" Version="4.0.1" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="NSubstitute" Version="5.3.0" />
Expand All @@ -117,9 +135,8 @@
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta4.22272.1" />
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
<PackageVersion Include="System.Data.SqlClient" Version="4.8.6" />
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="8.0.0" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="$(SdkPackageVersion)" />
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="$(SdkPackageVersion)" />
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.1.2" />
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
Expand Down
2 changes: 1 addition & 1 deletion build/build-variables.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ variables:
buildConfiguration: 'Release'
publicDockerImagePlatforms: 'linux/amd64,linux/arm64'
testDockerImagePlatforms: 'linux/amd64'
defaultBuildFramework: 'net8.0'
defaultBuildFramework: 'net9.0'
azureSubscriptionEndpoint: 'docker-build'
azureContainerRegistryName: 'healthplatformregistry'
azureContainerRegistry: '$(azureContainerRegistryName).azurecr.io'
Expand Down
9 changes: 8 additions & 1 deletion build/ci-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ stages:
majorMinorPatch: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.majorMinorPatch']]
nuGetVersion: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.nuGetVersion']]
jobs:
- job: Windows_dotnet8
- job: Windows_dotnet9
pool:
name: '$(DefaultWindowsPool)'
steps:
Expand All @@ -74,6 +74,13 @@ stages:
targetBuildFramework: $(defaultBuildFramework)
unitTest: false
codeCoverage: true
- job: Windows_dotnet8
pool:
name: '$(DefaultWindowsPool)'
steps:
- template: ./jobs/build.yml
parameters:
targetBuildFramework: 'net8.0'
- job: Linux_dotnet6
pool:
name: '$(DefaultLinuxPool)'
Expand Down
11 changes: 3 additions & 8 deletions build/docker/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
# --platform tells docker to always use the host platform for the build not the target platform. Runtime container will use target platform.
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0.403-cbl-mariner2.0 AS build
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0.102-azurelinux3.0 AS build
ARG TARGETARCH
ARG FHIR_VERSION
ARG ASSEMBLY_VER

RUN groupadd nonroot -g 1000 && useradd -r -M -s /sbin/nologin -g nonroot -c nonroot nonroot -u 998

WORKDIR /repo

COPY .editorconfig \
Expand Down Expand Up @@ -76,10 +74,10 @@ RUN dotnet restore ./src/Microsoft.Health.Fhir.${FHIR_VERSION}.Web/Microsoft.Hea

COPY . .

RUN dotnet publish /repo/src/Microsoft.Health.Fhir.${FHIR_VERSION}.Web/Microsoft.Health.Fhir.${FHIR_VERSION}.Web.csproj -o "/build" --no-restore -p:AssemblyVersion="${ASSEMBLY_VER}" -p:FileVersion="${ASSEMBLY_VER}" -p:Version="${ASSEMBLY_VER}" -f net8.0 -a $TARGETARCH
RUN dotnet publish /repo/src/Microsoft.Health.Fhir.${FHIR_VERSION}.Web/Microsoft.Health.Fhir.${FHIR_VERSION}.Web.csproj -o "/build" --no-restore -p:AssemblyVersion="${ASSEMBLY_VER}" -p:FileVersion="${ASSEMBLY_VER}" -p:Version="${ASSEMBLY_VER}" -f net9.0 -a $TARGETARCH

# Implicitly uses the target platform for the runtime image.
FROM mcr.microsoft.com/dotnet/aspnet:8.0.11-cbl-mariner2.0 AS runtime
FROM mcr.microsoft.com/dotnet/aspnet:9.0.1-azurelinux3.0 AS runtime

ARG FHIR_VERSION

Expand All @@ -90,9 +88,6 @@ RUN tdnf clean all && tdnf repolist --refresh && tdnf update -y && tdnf clean al
RUN tdnf install icu -y && \
tdnf clean all

COPY --from=build /etc/group /etc/group
COPY --from=build /etc/passwd /etc/passwd

ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \
ASPNETCORE_URLS=http://+:8080

Expand Down
2 changes: 1 addition & 1 deletion build/dotnet6-compat/global.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "6.0.427"
"version": "6.0.428"
}
}
5 changes: 5 additions & 0 deletions build/dotnet8-compat/global.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"sdk": {
"version": "8.0.405"
}
}
2 changes: 1 addition & 1 deletion build/jobs/analyze.yml
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ steps:
inputs:
userProvideBuildInfo: 'msBuildInfo'
msBuildArchitecture: 'DotNetCore'
msBuildCommandline: 'dotnet build $(Build.SourcesDirectory)/Microsoft.Health.Fhir.sln --configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -f net8.0'
msBuildCommandline: 'dotnet build $(Build.SourcesDirectory)/Microsoft.Health.Fhir.sln --configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -f net9.0'

- task: BinSkim@4
inputs:
Expand Down
2 changes: 1 addition & 1 deletion build/jobs/run-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ jobs:
workingDirectory: "$(System.ArtifactsDirectory)"
testRunTitle: '${{ parameters.version }} Integration'
env:
'SqlServer:ConnectionString': 'Server=tcp:${{ parameters.integrationSqlServerName }}.database.windows.net,1433;Initial Catalog=master;Persist Security Info=False;Authentication=Active Directory Workload Identity;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User Id=$(AZURESUBSCRIPTION_CLIENT_ID);'
'SqlServer:ConnectionString': 'Server=tcp:${{ parameters.integrationSqlServerName }}.database.windows.net,1433;Initial Catalog=master;Persist Security Info=False;Authentication=ActiveDirectoryWorkloadIdentity;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User Id=$(AZURESUBSCRIPTION_CLIENT_ID);'
'AZURESUBSCRIPTION_CLIENT_ID': '$(AZURESUBSCRIPTION_CLIENT_ID)'
'AZURESUBSCRIPTION_TENANT_ID': '$(AZURESUBSCRIPTION_TENANT_ID)'
'AZURESUBSCRIPTION_SERVICE_CONNECTION_ID': '$(AZURESUBSCRIPTION_SERVICE_CONNECTION_ID)'
Expand Down
12 changes: 9 additions & 3 deletions build/pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ stages:
majorMinorPatch: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.majorMinorPatch']]
nuGetVersion: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.nuGetVersion']]
jobs:
- job: Windows_dotnet8
- job: Windows_dotnet9
pool:
name: '$(DefaultWindowsPool)'
steps:
Expand All @@ -46,6 +46,13 @@ stages:
targetBuildFramework: $(defaultBuildFramework)
unitTest: false
codeCoverage: true
- job: Windows_dotnet8
pool:
name: '$(DefaultWindowsPool)'
steps:
- template: ./jobs/build.yml
parameters:
targetBuildFramework: 'net8.0'
- job: Linux_dotnet6
pool:
name: '$(DefaultLinuxPool)'
Expand All @@ -54,8 +61,7 @@ stages:
- template: ./jobs/build.yml
parameters:
targetBuildFramework: 'net6.0'



- stage: BuildArtifacts
displayName: 'Build artifacts'
dependsOn:
Expand Down
2 changes: 1 addition & 1 deletion global.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"sdk": {
"version": "8.0.403"
"version": "9.0.102"
}
}
2 changes: 1 addition & 1 deletion samples/apps/SmartLauncher/Models/SmartLauncherConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

namespace Microsoft.Health.Internal.SmartLauncher.Models
{
public class SmartLauncherConfig
internal class SmartLauncherConfig
{
#pragma warning disable CA1056 // URI-like properties should not be strings
public string FhirServerUrl { get; set; }
Expand Down
2 changes: 1 addition & 1 deletion samples/apps/SmartLauncher/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

namespace Microsoft.Health.Internal.SmartLauncher
{
public static class Program
internal static class Program
{
public static void Main(string[] args)
{
Expand Down
5 changes: 3 additions & 2 deletions samples/apps/SmartLauncher/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@

namespace Microsoft.Health.Internal.SmartLauncher
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Maintainability", "CA1515:Consider making public types internal", Justification = "Startup class.")]
public class Startup
{
public Startup(IConfiguration configuration)
Expand All @@ -27,9 +28,9 @@ public Startup(IConfiguration configuration)

// This method gets called by the runtime. Use this method to add services to the container.
// For more information on how to configure your application, visit https://go.microsoft.com/fwlink/?LinkID=398940
#pragma warning disable CA1801 // Review unused parameters
[System.Diagnostics.CodeAnalysis.SuppressMessage("Performance", "CA1822:Mark members as static", Justification = "Required by runtime.")]
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0060:Remove unused parameter", Justification = "Required by runtime.")]
public void ConfigureServices(IServiceCollection services)
#pragma warning restore CA1801 // Review unused parameters
{
}

Expand Down
2 changes: 1 addition & 1 deletion samples/templates/default-azuredeploy-docker.json
Original file line number Diff line number Diff line change
Expand Up @@ -700,7 +700,7 @@
"apiVersion": "2015-06-01",
"properties": {
"contentType": "text/plain",
"value": "[concat('Server=tcp:', if(equals(parameters('solutionType'),'FhirServerSqlServer'), reference(variables('computedSqlServerReference'), '2015-05-01-preview').fullyQualifiedDomainName, ''),',1433;Initial Catalog=',variables('sqlDatabaseName'),';Persist Security Info=False;Authentication=ActiveDirectoryMsi;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User Id=', reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), '2018-11-30').clientId, ';')]"
"value": "[concat('Server=tcp:', if(equals(parameters('solutionType'),'FhirServerSqlServer'), reference(variables('computedSqlServerReference'), '2015-05-01-preview').fullyQualifiedDomainName, ''),',1433;Initial Catalog=',variables('sqlDatabaseName'),';Persist Security Info=False;Authentication=ActiveDirectoryMSI;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User Id=', reference(resourceId('Microsoft.ManagedIdentity/userAssignedIdentities', variables('managedIdentityName')), '2018-11-30').clientId, ';')]"
},
"dependsOn": [
"[resourceId('Microsoft.KeyVault/vaults', variables('serviceName'))]",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ namespace Microsoft.Health.Extensions.Xunit
/// Also allows an assembly to declare one or more <see cref="AssemblyFixtureAttribute"/>, which are created before any tests
/// are executed and disposed at the end of the test run.
/// </summary>
public class CustomXunitTestFramework : XunitTestFramework
public sealed class CustomXunitTestFramework : XunitTestFramework
{
/// <summary>
/// This type's assembly name.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<NoWarn>$(NoWarn);NU5104;NU5100</NoWarn>
<NoWarn>$(NoWarn);NU5104;NU5100;CA1812;CA1515</NoWarn>
</PropertyGroup>

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<NoWarn>$(NoWarn);NU5104;NU5100</NoWarn>
<NoWarn>$(NoWarn);NU5104;NU5100;CA1812;CA1515</NoWarn>
</PropertyGroup>

<ItemGroup>
Expand Down
Loading

0 comments on commit e330f77

Please sign in to comment.