Skip to content

Commit e330f77

Browse files
Adds .net 9 support (#4763)
1 parent 09128a7 commit e330f77

File tree

75 files changed

+202
-120
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+202
-120
lines changed

CustomAnalysisRules.ruleset

+6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,18 @@
22
<RuleSet Name="FHIR Analysis Rules" Description="The code analysis rules used for the FHIR server C# source projects." ToolsVersion="17.0">
33
<Include Path="minimumrecommendedrules.ruleset" Action="Default" />
44
<Include Path="securityrules.ruleset" Action="Default" />
5+
<Rules AnalyzerId="Microsoft.Analyzers.ManagedCodeAnalysis" RuleNamespace="Microsoft.Rules.Managed">
6+
<Rule Id="CA1852" Action="None" />
7+
</Rules>
58
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.Features" RuleNamespace="Microsoft.CodeAnalysis.CSharp.Features">
69
<Rule Id="IDE0003" Action="Warning" />
710
<Rule Id="IDE0004" Action="Warning" />
811
<Rule Id="IDE0005" Action="Warning" />
912
<Rule Id="IDE1005" Action="Warning" />
1013
</Rules>
14+
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp.NetAnalyzers" RuleNamespace="Microsoft.CodeAnalysis.CSharp.NetAnalyzers">
15+
<Rule Id="CA1852" Action="None" />
16+
</Rules>
1117
<Rules AnalyzerId="Microsoft.CodeAnalysis.NetAnalyzers" RuleNamespace="Microsoft.CodeAnalysis.NetAnalyzers">
1218
<Rule Id="CA1008" Action="Info" />
1319
<Rule Id="CA1014" Action="Info" />

Directory.Build.props

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<PublishRepositoryUrl>true</PublishRepositoryUrl>
2020
<RepositoryUrl>https://github.com/microsoft/fhir-server</RepositoryUrl>
2121
<RunSettingsFilePath>$(MSBuildThisFileDirectory)\CodeCoverage.runsettings</RunSettingsFilePath>
22-
<TargetFrameworks>net8.0;net6.0</TargetFrameworks>
22+
<TargetFrameworks>net9.0;net8.0;net6.0</TargetFrameworks>
2323
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch>
2424
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
2525
<WarningsAsErrors />

Directory.Packages.props

+52-35
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,40 @@
11
<Project>
22
<!-- Shared dependencies versions.-->
33
<PropertyGroup>
4-
<HealthcareSharedPackageVersion>7.1.183</HealthcareSharedPackageVersion>
4+
<HealthcareSharedPackageVersion>8.0.30</HealthcareSharedPackageVersion>
5+
<Hl7FhirVersion>4.3.0</Hl7FhirVersion>
56
<Hl7FhirVersion>5.4.0</Hl7FhirVersion>
67
<Hl7FhirLegacyVersion>5.3.0</Hl7FhirLegacyVersion>
78
</PropertyGroup>
9+
<!-- SDK Packages -->
10+
<Choose>
11+
<When Condition="'$(TargetFramework)' == 'net6.0'">
12+
<PropertyGroup>
13+
<!-- >= 12.2.0 MediatR started depending on 8.x Microsoft.Extension.* libraries -->
14+
<MediatRVersion>12.4.1</MediatRVersion>
15+
<LoggingVersion>8.0.2</LoggingVersion>
16+
<SdkPackageVersion>8.0</SdkPackageVersion>
17+
<AspNetPackageVersion>6.0</AspNetPackageVersion>
18+
</PropertyGroup>
19+
</When>
20+
<When Condition="'$(TargetFramework)' == 'net8.0'">
21+
<PropertyGroup>
22+
<!-- >= 12.2.0 MediatR started depending on 8.x Microsoft.Extension.* libraries -->
23+
<MediatRVersion>12.4.1</MediatRVersion>
24+
<LoggingVersion>8.0.2</LoggingVersion>
25+
<SdkPackageVersion>8.0</SdkPackageVersion>
26+
<AspNetPackageVersion>8.0</AspNetPackageVersion>
27+
</PropertyGroup>
28+
</When>
29+
<Otherwise>
30+
<PropertyGroup>
31+
<MediatRVersion>12.4.1</MediatRVersion>
32+
<LoggingVersion>9.0.1</LoggingVersion>
33+
<SdkPackageVersion>9.0.0</SdkPackageVersion>
34+
<AspNetPackageVersion>9.0.0</AspNetPackageVersion>
35+
</PropertyGroup>
36+
</Otherwise>
37+
</Choose>
838
<ItemGroup Label="CVE Mitigation">
939
<!--Please include the CGA id if possible-->
1040
<PackageVersion Include="System.Security.Cryptography.Xml" Version="8.0.2" />
@@ -17,22 +47,9 @@
1747
<!-- CVE-2022-26907 -->
1848
<PackageVersion Include="Microsoft.Rest.ClientRuntime" Version="2.3.24" />
1949
</ItemGroup>
20-
<!-- SDK Packages -->
21-
<Choose>
22-
<When Condition="'$(TargetFramework)' == 'net8.0'">
23-
<PropertyGroup>
24-
<AspNetPackageVersion>8.0.0</AspNetPackageVersion>
25-
</PropertyGroup>
26-
</When>
27-
<Otherwise>
28-
<PropertyGroup>
29-
<AspNetPackageVersion>6.0.23</AspNetPackageVersion>
30-
</PropertyGroup>
31-
</Otherwise>
32-
</Choose>
3350
<ItemGroup>
3451
<PackageVersion Include="AngleSharp" Version="1.1.2" />
35-
<PackageVersion Include="Azure.Identity" Version="1.13.1" />
52+
<PackageVersion Include="Azure.Identity" Version="1.13.2" />
3653
<PackageVersion Include="Azure.ResourceManager.CosmosDB" Version="1.3.2" />
3754
<PackageVersion Include="Azure.Extensions.AspNetCore.Configuration.Secrets" Version="1.3.2" />
3855
<PackageVersion Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.2.0" />
@@ -59,7 +76,7 @@
5976
<PackageVersion Include="Hl7.Fhir.Specification.R4B" Version="$(Hl7FhirVersion)" />
6077
<PackageVersion Include="Hl7.Fhir.Specification.R5" Version="$(Hl7FhirVersion)" />
6178
<PackageVersion Include="IdentityServer4" Version="4.1.2" />
62-
<PackageVersion Include="MediatR" Version="12.4.1" />
79+
<PackageVersion Include="MediatR" Version="$(MediatRVersion)" />
6380
<PackageVersion Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.22.0" />
6481
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(AspNetPackageVersion)" />
6582
<PackageVersion Include="Microsoft.AspNetCore.JsonPatch" Version="$(AspNetPackageVersion)" />
@@ -70,22 +87,23 @@
7087
<PackageVersion Include="Microsoft.Azure.ContainerRegistry" Version="1.0.0-preview.2" />
7188
<PackageVersion Include="Microsoft.Azure.Cosmos" Version="3.45.2" />
7289
<PackageVersion Include="Microsoft.Azure.Storage.Blob" Version="11.2.3" />
73-
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
74-
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="8.0.0" />
75-
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
76-
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="8.0.0" />
77-
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="8.0.8" />
78-
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="8.0.7" />
79-
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="8.0.10" />
80-
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="8.0.0" />
81-
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="8.0.8" />
82-
<PackageVersion Include="Microsoft.Extensions.Http" Version="8.0.0" />
83-
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="8.0.1" />
90+
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.2.2" />
91+
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(SdkPackageVersion)" />
92+
<PackageVersion Include="Microsoft.Extensions.Configuration.CommandLine" Version="$(SdkPackageVersion)" />
93+
<PackageVersion Include="Microsoft.Extensions.Configuration.Json" Version="$(SdkPackageVersion)" />
94+
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="$(SdkPackageVersion)" />
95+
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks.Abstractions" Version="$(SdkPackageVersion)" />
96+
<PackageVersion Include="Microsoft.Extensions.Diagnostics.HealthChecks" Version="$(SdkPackageVersion)" />
97+
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(SdkPackageVersion)" />
98+
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="$(SdkPackageVersion)" />
99+
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(SdkPackageVersion)" />
100+
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(SdkPackageVersion)" />
101+
<PackageVersion Include="Microsoft.Extensions.Logging.Abstractions" Version="$(LoggingVersion)" />
84102
<PackageVersion Include="Microsoft.Extensions.Logging.ApplicationInsights" Version="2.22.0" />
85-
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="8.0.0" />
86-
<PackageVersion Include="Microsoft.Extensions.Logging" Version="8.0.0" />
87-
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="8.10.0" />
88-
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="8.0.0" />
103+
<PackageVersion Include="Microsoft.Extensions.Logging.Console" Version="$(SdkPackageVersion)" />
104+
<PackageVersion Include="Microsoft.Extensions.Logging" Version="$(SdkPackageVersion)" />
105+
<PackageVersion Include="Microsoft.Extensions.TimeProvider.Testing" Version="$(SdkPackageVersion)" />
106+
<PackageVersion Include="Microsoft.Extensions.Options.ConfigurationExtensions" Version="$(SdkPackageVersion)" />
89107
<PackageVersion Include="Microsoft.Health.Abstractions" Version="$(HealthcareSharedPackageVersion)" />
90108
<PackageVersion Include="Microsoft.Health.Api" Version="$(HealthcareSharedPackageVersion)" />
91109
<PackageVersion Include="Microsoft.Health.Client" Version="$(HealthcareSharedPackageVersion)" />
@@ -105,7 +123,7 @@
105123
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
106124
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
107125
<PackageVersion Include="Microsoft.SqlServer.DACFx" Version="162.0.52" />
108-
<PackageVersion Include="Microsoft.SqlServer.SqlManagementObjects" Version="171.30.0" />
126+
<PackageVersion Include="Microsoft.SqlServer.SqlManagementObjects" Version="172.52.0" />
109127
<PackageVersion Include="Newtonsoft.Json.Schema" Version="4.0.1" />
110128
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
111129
<PackageVersion Include="NSubstitute" Version="5.3.0" />
@@ -117,9 +135,8 @@
117135
<PackageVersion Include="System.Collections.Immutable" Version="8.0.0" />
118136
<PackageVersion Include="System.CommandLine.NamingConventionBinder" Version="2.0.0-beta4.22272.1" />
119137
<PackageVersion Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
120-
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="8.0.0" />
121-
<PackageVersion Include="System.Data.SqlClient" Version="4.8.6" />
122-
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="8.0.0" />
138+
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="$(SdkPackageVersion)" />
139+
<PackageVersion Include="System.Diagnostics.PerformanceCounter" Version="$(SdkPackageVersion)" />
123140
<PackageVersion Include="System.IdentityModel.Tokens.Jwt" Version="8.1.2" />
124141
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
125142
<PackageVersion Include="System.Net.Http" Version="4.3.4" />

build/build-variables.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ variables:
55
buildConfiguration: 'Release'
66
publicDockerImagePlatforms: 'linux/amd64,linux/arm64'
77
testDockerImagePlatforms: 'linux/amd64'
8-
defaultBuildFramework: 'net8.0'
8+
defaultBuildFramework: 'net9.0'
99
azureSubscriptionEndpoint: 'docker-build'
1010
azureContainerRegistryName: 'healthplatformregistry'
1111
azureContainerRegistry: '$(azureContainerRegistryName).azurecr.io'

build/ci-pipeline.yml

+8-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ stages:
6565
majorMinorPatch: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.majorMinorPatch']]
6666
nuGetVersion: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.nuGetVersion']]
6767
jobs:
68-
- job: Windows_dotnet8
68+
- job: Windows_dotnet9
6969
pool:
7070
name: '$(DefaultWindowsPool)'
7171
steps:
@@ -74,6 +74,13 @@ stages:
7474
targetBuildFramework: $(defaultBuildFramework)
7575
unitTest: false
7676
codeCoverage: true
77+
- job: Windows_dotnet8
78+
pool:
79+
name: '$(DefaultWindowsPool)'
80+
steps:
81+
- template: ./jobs/build.yml
82+
parameters:
83+
targetBuildFramework: 'net8.0'
7784
- job: Linux_dotnet6
7885
pool:
7986
name: '$(DefaultLinuxPool)'

build/docker/Dockerfile

+3-8
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,9 @@
11
# --platform tells docker to always use the host platform for the build not the target platform. Runtime container will use target platform.
2-
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:8.0.403-cbl-mariner2.0 AS build
2+
FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0.102-azurelinux3.0 AS build
33
ARG TARGETARCH
44
ARG FHIR_VERSION
55
ARG ASSEMBLY_VER
66

7-
RUN groupadd nonroot -g 1000 && useradd -r -M -s /sbin/nologin -g nonroot -c nonroot nonroot -u 998
8-
97
WORKDIR /repo
108

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

7775
COPY . .
7876

79-
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
77+
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
8078

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

8482
ARG FHIR_VERSION
8583

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

93-
COPY --from=build /etc/group /etc/group
94-
COPY --from=build /etc/passwd /etc/passwd
95-
9691
ENV DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false \
9792
ASPNETCORE_URLS=http://+:8080
9893

build/dotnet6-compat/global.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"sdk": {
3-
"version": "6.0.427"
3+
"version": "6.0.428"
44
}
55
}

build/dotnet8-compat/global.json

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"sdk": {
3+
"version": "8.0.405"
4+
}
5+
}

build/jobs/analyze.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ steps:
110110
inputs:
111111
userProvideBuildInfo: 'msBuildInfo'
112112
msBuildArchitecture: 'DotNetCore'
113-
msBuildCommandline: 'dotnet build $(Build.SourcesDirectory)/Microsoft.Health.Fhir.sln --configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -f net8.0'
113+
msBuildCommandline: 'dotnet build $(Build.SourcesDirectory)/Microsoft.Health.Fhir.sln --configuration $(buildConfiguration) -p:ContinuousIntegrationBuild=true -f net9.0'
114114

115115
- task: BinSkim@4
116116
inputs:

build/jobs/run-tests.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ jobs:
119119
workingDirectory: "$(System.ArtifactsDirectory)"
120120
testRunTitle: '${{ parameters.version }} Integration'
121121
env:
122-
'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);'
122+
'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);'
123123
'AZURESUBSCRIPTION_CLIENT_ID': '$(AZURESUBSCRIPTION_CLIENT_ID)'
124124
'AZURESUBSCRIPTION_TENANT_ID': '$(AZURESUBSCRIPTION_TENANT_ID)'
125125
'AZURESUBSCRIPTION_SERVICE_CONNECTION_ID': '$(AZURESUBSCRIPTION_SERVICE_CONNECTION_ID)'

build/pr-pipeline.yml

+9-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ stages:
3737
majorMinorPatch: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.majorMinorPatch']]
3838
nuGetVersion: $[stageDependencies.UpdateVersion.Semver.outputs['SetVariablesFromGitVersion.nuGetVersion']]
3939
jobs:
40-
- job: Windows_dotnet8
40+
- job: Windows_dotnet9
4141
pool:
4242
name: '$(DefaultWindowsPool)'
4343
steps:
@@ -46,6 +46,13 @@ stages:
4646
targetBuildFramework: $(defaultBuildFramework)
4747
unitTest: false
4848
codeCoverage: true
49+
- job: Windows_dotnet8
50+
pool:
51+
name: '$(DefaultWindowsPool)'
52+
steps:
53+
- template: ./jobs/build.yml
54+
parameters:
55+
targetBuildFramework: 'net8.0'
4956
- job: Linux_dotnet6
5057
pool:
5158
name: '$(DefaultLinuxPool)'
@@ -54,8 +61,7 @@ stages:
5461
- template: ./jobs/build.yml
5562
parameters:
5663
targetBuildFramework: 'net6.0'
57-
58-
64+
5965
- stage: BuildArtifacts
6066
displayName: 'Build artifacts'
6167
dependsOn:

global.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
22
"sdk": {
3-
"version": "8.0.403"
3+
"version": "9.0.102"
44
}
55
}

samples/apps/SmartLauncher/Models/SmartLauncherConfig.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
namespace Microsoft.Health.Internal.SmartLauncher.Models
77
{
8-
public class SmartLauncherConfig
8+
internal class SmartLauncherConfig
99
{
1010
#pragma warning disable CA1056 // URI-like properties should not be strings
1111
public string FhirServerUrl { get; set; }

samples/apps/SmartLauncher/Program.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
namespace Microsoft.Health.Internal.SmartLauncher
1010
{
11-
public static class Program
11+
internal static class Program
1212
{
1313
public static void Main(string[] args)
1414
{

samples/apps/SmartLauncher/Startup.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

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

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

samples/templates/default-azuredeploy-docker.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -700,7 +700,7 @@
700700
"apiVersion": "2015-06-01",
701701
"properties": {
702702
"contentType": "text/plain",
703-
"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, ';')]"
703+
"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, ';')]"
704704
},
705705
"dependsOn": [
706706
"[resourceId('Microsoft.KeyVault/vaults', variables('serviceName'))]",

src/Microsoft.Health.Extensions.Xunit/CustomXunitTestFramework.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace Microsoft.Health.Extensions.Xunit
1616
/// Also allows an assembly to declare one or more <see cref="AssemblyFixtureAttribute"/>, which are created before any tests
1717
/// are executed and disposed at the end of the test run.
1818
/// </summary>
19-
public class CustomXunitTestFramework : XunitTestFramework
19+
public sealed class CustomXunitTestFramework : XunitTestFramework
2020
{
2121
/// <summary>
2222
/// This type's assembly name.

src/Microsoft.Health.Extensions.Xunit/Microsoft.Health.Extensions.Xunit.csproj

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,11 @@
55
</PropertyGroup>
66

77
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
8-
<NoWarn>$(NoWarn);NU5104;NU5100</NoWarn>
8+
<NoWarn>$(NoWarn);NU5104;NU5100;CA1812;CA1515</NoWarn>
99
</PropertyGroup>
1010

1111
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
12-
<NoWarn>$(NoWarn);NU5104;NU5100</NoWarn>
12+
<NoWarn>$(NoWarn);NU5104;NU5100;CA1812;CA1515</NoWarn>
1313
</PropertyGroup>
1414

1515
<ItemGroup>

0 commit comments

Comments
 (0)