Skip to content

Commit c8503d3

Browse files
authored
Cleanup GenFacades logic and don't bind against non-shipping contract assemblies (#78703)
* Clean-up the ApiCompat and GenAPI logic * Fix System.DirectoryServices.AccountManagement build System.DirectoryServices.AccountManagement now builds against src/System.DirectoryServices instead of ref/System.DirectoryServices (because the package doesn't contain the ref assembly). Because of that, the compiler now gets confused because of the System.DirectoryServices.Interop namespace and the global Interop class. This happens even though the DirectoryServices.Interop namespace doesn't include any public types. That results in the following erros: src\libraries\System.DirectoryServices.AccountManagement\src\System\DirectoryServices\AccountManagement\AD\SidList.cs(50,26): error CS0246: The type or namespace name 'SID_AND_ATTRIBUTES' could not be found (are you missing a using directive or an assembly reference?) src\libraries\System.DirectoryServices.AccountManagement\src\System\DirectoryServices\AccountManagement\interopt.cs(439,20): error CS0246: The type or namespace name 'UNICODE_INTPTR_STRING' could not be found (are you missing a using directive or an assembly reference?) This commit fixes that by removing the System.DirectoryServices.Interop namespace and moving the types into the parent namespace. * Suppress nullable warnings in Serialization.Schema Now that Schema compiles against the source assembly of System.CodeDom, it receives nullability errors. I'm suppressing them manually for now but am filing an issue to correctly fix those. Related: #78036 * Move SkipUseReferenceAssembly target up
1 parent a8e2b6e commit c8503d3

39 files changed

+147
-134
lines changed

eng/Version.Details.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,9 +106,9 @@
106106
<Uri>https://github.com/dotnet/arcade</Uri>
107107
<Sha>80b6be47e1425ea90c5febffac119250043a0c92</Sha>
108108
</Dependency>
109-
<Dependency Name="Microsoft.DotNet.GenFacades" Version="8.0.0-beta.22554.2">
109+
<Dependency Name="Microsoft.DotNet.GenFacades" Version="8.0.0-beta.22572.2">
110110
<Uri>https://github.com/dotnet/arcade</Uri>
111-
<Sha>80b6be47e1425ea90c5febffac119250043a0c92</Sha>
111+
<Sha>fc4ba340496ca0e45d51914f8f1606c60e3c75c6</Sha>
112112
</Dependency>
113113
<Dependency Name="Microsoft.DotNet.XUnitExtensions" Version="8.0.0-beta.22554.2">
114114
<Uri>https://github.com/dotnet/arcade</Uri>

eng/Versions.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
<MicrosoftDotNetBuildTasksFeedVersion>8.0.0-beta.22554.2</MicrosoftDotNetBuildTasksFeedVersion>
8686
<MicrosoftDotNetCodeAnalysisVersion>8.0.0-beta.22554.2</MicrosoftDotNetCodeAnalysisVersion>
8787
<MicrosoftDotNetGenAPIVersion>8.0.0-beta.22554.2</MicrosoftDotNetGenAPIVersion>
88-
<MicrosoftDotNetGenFacadesVersion>8.0.0-beta.22554.2</MicrosoftDotNetGenFacadesVersion>
88+
<MicrosoftDotNetGenFacadesVersion>8.0.0-beta.22572.2</MicrosoftDotNetGenFacadesVersion>
8989
<MicrosoftDotNetXUnitExtensionsVersion>8.0.0-beta.22554.2</MicrosoftDotNetXUnitExtensionsVersion>
9090
<MicrosoftDotNetXUnitConsoleRunnerVersion>2.5.1-beta.22554.2</MicrosoftDotNetXUnitConsoleRunnerVersion>
9191
<MicrosoftDotNetBuildTasksArchivesVersion>8.0.0-beta.22554.2</MicrosoftDotNetBuildTasksArchivesVersion>

eng/references.targets

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,26 @@
5959
</ItemGroup>
6060
</Target>
6161

62+
<!-- Allows building against source assemblies when the 'SkipUseReferenceAssembly' attribute is present on ProjectReference items. -->
63+
<Target Name="HandleReferenceAssemblyAttributeForProjectReferences"
64+
AfterTargets="ResolveProjectReferences"
65+
BeforeTargets="FindReferenceAssembliesForReferences"
66+
Condition="'@(ProjectReference)' != '' and '@(_ResolvedProjectReferencePaths)' != ''">
67+
<!-- If we have a ProjectReference to CoreLib, we need to compile against implementation assemblies. -->
68+
<PropertyGroup Condition="@(_ResolvedProjectReferencePaths->AnyHaveMetadataValue('MSBuildSourceProjectFile', '$(CoreLibProject)'))">
69+
<CompileUsingReferenceAssemblies Condition="'$(CompileUsingReferenceAssemblies)' == ''">false</CompileUsingReferenceAssemblies>
70+
</PropertyGroup>
71+
<!-- Clear the ReferenceAssembly attribute on resolved P2Ps that set SkipUseReferenceAssembly to true. -->
72+
<ItemGroup>
73+
<_resolvedP2PFiltered Include="@(ProjectReference)"
74+
ProjectReferenceItemSpec="$([System.IO.Path]::GetFullPath('%(ProjectReference.Identity)'))"
75+
SkipUseReferenceAssembly="%(ProjectReference.SkipUseReferenceAssembly)" />
76+
<_ResolvedProjectReferencePaths Condition="'%(_resolvedP2PFiltered.ProjectReferenceItemSpec)' == '%(_resolvedP2PFiltered.MSBuildSourceProjectFile)' and
77+
'%(_resolvedP2PFiltered.SkipUseReferenceAssembly)' == 'true'"
78+
ReferenceAssembly="" />
79+
</ItemGroup>
80+
</Target>
81+
6282
<ItemDefinitionGroup>
6383
<TargetPathWithTargetPlatformMoniker>
6484
<IsReferenceAssemblyProject>$(IsReferenceAssemblyProject)</IsReferenceAssemblyProject>

eng/resolveContract.props

Lines changed: 0 additions & 14 deletions
This file was deleted.

eng/resolveContract.targets

Lines changed: 73 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,72 @@
11
<Project>
2+
<!--
3+
##### Contract project settings #####
4+
- Allows referencing contract projects for passing matching reference assemblies to tooling like ApiCompat.
5+
- Allows building against contract assemblies when referencing source projects.
6+
-->
7+
8+
<PropertyGroup>
9+
<ContractProject Condition="'$(ContractProject)' == ''">$(LibrariesProjectRoot)$(MSBuildProjectName)\ref\$(MSBuildProjectName).csproj</ContractProject>
10+
<HasMatchingContract Condition="'$(HasMatchingContract)' == '' and Exists('$(ContractProject)')">true</HasMatchingContract>
11+
<!-- Don't build against reference assemblies when projects are packable and the tfm is not the latest .NETCoreApp as
12+
such reference assemblies don't ship to customers and only exist for tooling scenarios. -->
13+
<AnnotateTargetPathWithContract Condition="'$(AnnotateTargetPathWithContract)' == '' and
14+
'$(HasMatchingContract)' == 'true' and
15+
(
16+
'$(IsPackable)' != 'true' or
17+
(
18+
'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and
19+
'$(TargetFrameworkVersion)' == 'v$(NetCoreAppCurrentVersion)'
20+
)
21+
)">true</AnnotateTargetPathWithContract>
22+
</PropertyGroup>
23+
24+
<ItemGroup Condition="'$(HasMatchingContract)' == 'true' and '$(ContractProject)' != ''">
25+
<ProjectReference Include="$(ContractProject)" ReferenceOutputAssembly="false" OutputItemType="ResolvedMatchingContract" />
26+
<!-- We aren't referencing the contract, but make sure it's considered as an input to Compile so that if it changes we rebuild and rerun API compat -->
27+
<ProjectReference Include="$(ContractProject)" ReferenceOutputAssembly="false" OutputItemType="CustomAdditionalCompileInputs" />
28+
</ItemGroup>
29+
30+
<!-- Allow P2Ps that target a source project to build against the corresponding ref project. -->
31+
<Target Name="AnnotateTargetPathWithTargetPlatformMonikerWithReferenceAssembly"
32+
Condition="'$(AnnotateTargetPathWithContract)' == 'true'"
33+
DependsOnTargets="ResolveProjectReferences"
34+
AfterTargets="GetTargetPathWithTargetPlatformMoniker">
35+
<ItemGroup>
36+
<TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContract)" />
37+
</ItemGroup>
38+
</Target>
39+
40+
<!-- ##### APICompat settings ##### -->
41+
242
<PropertyGroup>
343
<ApiCompatContractItemName>ResolvedMatchingContract</ApiCompatContractItemName>
444
<ApiCompatStrictMode Condition="'$(ApiCompatStrictMode)' == ''">true</ApiCompatStrictMode>
45+
46+
<!-- Optional rules -->
47+
<ApiCompatEnableRuleAttributesMustMatch>true</ApiCompatEnableRuleAttributesMustMatch>
48+
<ApiCompatEnableRuleCannotChangeParameterName>true</ApiCompatEnableRuleCannotChangeParameterName>
49+
550
<_ApiCompatCaptureGroupPattern>.+%5C$([System.IO.Path]::DirectorySeparatorChar)(.+)%5C$([System.IO.Path]::DirectorySeparatorChar)(.+)</_ApiCompatCaptureGroupPattern>
651
<_ApiCompatRuntimePrefixPattern>(.+)/(net%5Cd.%5Cd)-(.+)/(.+)</_ApiCompatRuntimePrefixPattern>
752
<_ApiCompatLibReplacementString>lib/$1/$2</_ApiCompatLibReplacementString>
853
<!-- CoreLib source projects have different output paths. -->
954
<_ApiCompatLibReplacementString Condition="'$(MSBuildProjectName)' == 'System.Private.CoreLib'">lib/$(NetCoreAppCurrent)/$2</_ApiCompatLibReplacementString>
55+
</PropertyGroup>
1056

11-
<GenAPIExcludeAttributesList>$(RepositoryEngineeringDir)DefaultGenApiDocIds.txt</GenAPIExcludeAttributesList>
12-
<GenAPIHeaderFile>$(RepositoryEngineeringDir)LicenseHeader.txt</GenAPIHeaderFile>
13-
<GenAPITargetPath>$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', '..', 'ref', '$(AssemblyName).cs'))</GenAPITargetPath>
14-
<GenAPILangVersion Condition="'$(LangVersion)' != ''">$(LangVersion)</GenAPILangVersion>
15-
<ProjectForGenAPIDocIdGeneration Condition="'$(IsSourceProject)' == 'true' and '$(ProjectForGenAPIDocIdGeneration)' == ''">$(CoreLibProject)</ProjectForGenAPIDocIdGeneration>
57+
<PropertyGroup Condition="'$(IsCrossTargetingBuild)' != 'true'">
58+
<!-- Disable API compat if the project doesn't have a reference assembly. -->
59+
<ApiCompatValidateAssemblies Condition="'$(HasMatchingContract)' != 'true'">false</ApiCompatValidateAssemblies>
60+
<!-- TODO: Move into Microsoft.DotNet.GenFacadesNotSupported.targets. -->
61+
<!-- Not supported sources are created from the ref assembly, we currently don't produce finalizers in dummy assemblies, so we disable ApiCompat to not fail. -->
62+
<ApiCompatValidateAssemblies Condition="'$(GeneratePlatformNotSupportedAssemblyMessage)' != ''">false</ApiCompatValidateAssemblies>
1663
</PropertyGroup>
1764

65+
<ItemGroup>
66+
<ApiCompatExcludeAttributesFile Include="$(RepositoryEngineeringDir)DefaultGenApiDocIds.txt" />
67+
<ApiCompatExcludeAttributesFile Include="$(RepositoryEngineeringDir)ApiCompatExcludeAttributes.txt" />
68+
</ItemGroup>
69+
1870
<ItemGroup>
1971
<!-- Transform the API Compat assemblies passed in to log-able strings. -->
2072
<ApiCompatLeftAssembliesTransformationPattern Include="$(_ApiCompatCaptureGroupPattern)" ReplacementString="ref/$1/$2" />
@@ -30,64 +82,30 @@
3082
Condition="$([MSBuild]::IsTargetFrameworkCompatible('$(TargetFramework)', '$(NetCoreAppCurrent)'))" />
3183
</ItemGroup>
3284

33-
<PropertyGroup Condition="'$(IsSourceProject)' == 'true'">
34-
<ContractProject Condition="'$(ContractProject)' == ''">$(LibrariesProjectRoot)$(MSBuildProjectName)\ref\$(MSBuildProjectName).csproj</ContractProject>
35-
<HasMatchingContract Condition="'$(HasMatchingContract)' == '' and Exists('$(ContractProject)')">true</HasMatchingContract>
36-
</PropertyGroup>
37-
38-
<PropertyGroup Condition="'$(IsSourceProject)' == 'true' and '$(IsCrossTargetingBuild)' != 'true'">
39-
<!-- Disable API compat if the project doesn't have reference assembly -->
40-
<ApiCompatValidateAssemblies Condition="'$(HasMatchingContract)' != 'true'">false</ApiCompatValidateAssemblies>
41-
<!-- TODO: Move into Microsoft.DotNet.GenFacadesNotSupported.targets. -->
42-
<!-- Not supported sources are created from the ref assembly, we currently don't produce finalizers in dummy assemblies, so we disable ApiCompat to not fail. -->
43-
<ApiCompatValidateAssemblies Condition="'$(GeneratePlatformNotSupportedAssemblyMessage)' != ''">false</ApiCompatValidateAssemblies>
44-
</PropertyGroup>
45-
4685
<!-- Use the apicompat task package instead of the in-built SDK functionality to consume newer features. -->
4786
<ItemGroup Condition="'$(EnablePackageValidation)' == 'true' or
4887
'$(ApiCompatValidateAssemblies)' == 'true'">
4988
<PackageReference Include="Microsoft.DotNet.ApiCompat.Task" Version="$(MicrosoftDotNetApiCompatTaskVersion)" PrivateAssets="all" IsImplicitlyDefined="true" />
5089
</ItemGroup>
5190

52-
<ItemGroup Condition="'$(HasMatchingContract)' == 'true' and '$(ContractProject)' != '' and '@(ResolvedMatchingContract)' == ''">
53-
<ProjectReference Include="$(ContractProject)" ReferenceOutputAssembly="false" OutputItemType="ResolvedMatchingContract" />
54-
<!-- We aren't referencing the contract, but make sure it's considered as an input to Compile so that if it changes we rebuild and rerun API compat -->
55-
<ProjectReference Include="$(ContractProject)" ReferenceOutputAssembly="false" OutputItemType="CustomAdditionalCompileInputs" />
56-
</ItemGroup>
57-
<!-- intentionally empty since we no longer need a target -->
58-
<Target Name="ResolveMatchingContract" />
91+
<!-- ##### GenAPI settings ##### -->
5992

60-
<!-- Allow P2Ps that target a source project to build against the corresponding ref project. -->
61-
<Target Name="AnnotateTargetPathWithTargetPlatformMonikerWithReferenceAssembly"
62-
Condition="'$(HasMatchingContract)' == 'true'"
63-
DependsOnTargets="ResolveProjectReferences"
64-
AfterTargets="GetTargetPathWithTargetPlatformMoniker">
65-
<ItemGroup>
66-
<!-- Allow to point to a different reference project than what GenFacades uses to generate the type forwards. -->
67-
<TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContractOverride)" />
68-
<TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContract)"
69-
Condition="'@(ResolvedMatchingContractOverride)' == ''" />
70-
</ItemGroup>
71-
</Target>
93+
<PropertyGroup>
94+
<GenAPIExcludeAttributesList>$(RepositoryEngineeringDir)DefaultGenApiDocIds.txt</GenAPIExcludeAttributesList>
95+
<GenAPIHeaderFile>$(RepositoryEngineeringDir)LicenseHeader.txt</GenAPIHeaderFile>
96+
<GenAPITargetPath>$([MSBuild]::NormalizePath('$(MSBuildProjectDirectory)', '..', 'ref', '$(AssemblyName).cs'))</GenAPITargetPath>
97+
<GenAPILangVersion Condition="'$(LangVersion)' != ''">$(LangVersion)</GenAPILangVersion>
98+
<ProjectForGenAPIDocIdGeneration Condition="'$(ProjectForGenAPIDocIdGeneration)' == ''">$(CoreLibProject)</ProjectForGenAPIDocIdGeneration>
99+
</PropertyGroup>
72100

73-
<Target Name="HandleReferenceAssemblyAttributeForProjectReferences"
74-
AfterTargets="ResolveProjectReferences"
75-
BeforeTargets="FindReferenceAssembliesForReferences"
76-
Condition="'@(ProjectReference)' != '' and '@(_ResolvedProjectReferencePaths)' != ''">
77-
<!-- If we have a ProjectReference to CoreLib, we need to compile against implementation assemblies. -->
78-
<PropertyGroup Condition="@(_ResolvedProjectReferencePaths->AnyHaveMetadataValue('MSBuildSourceProjectFile', '$(CoreLibProject)'))">
79-
<CompileUsingReferenceAssemblies Condition="'$(CompileUsingReferenceAssemblies)' == ''">false</CompileUsingReferenceAssemblies>
80-
</PropertyGroup>
81-
<!-- Clear the ReferenceAssembly attribute on resolved P2Ps that set SkipUseReferenceAssembly to true. -->
82-
<ItemGroup>
83-
<_resolvedP2PFiltered Include="@(ProjectReference)"
84-
ProjectReferenceItemSpec="$([System.IO.Path]::GetFullPath('%(ProjectReference.Identity)'))"
85-
SkipUseReferenceAssembly="%(ProjectReference.SkipUseReferenceAssembly)" />
86-
<_ResolvedProjectReferencePaths Condition="'%(_resolvedP2PFiltered.ProjectReferenceItemSpec)' == '%(_resolvedP2PFiltered.MSBuildSourceProjectFile)' and
87-
'%(_resolvedP2PFiltered.SkipUseReferenceAssembly)' == 'true'"
88-
ReferenceAssembly="" />
89-
</ItemGroup>
90-
</Target>
101+
<ItemGroup>
102+
<!-- GenAPI is currently only invoked on demand and not used as part of the build as it isn't source build compatible. -->
103+
<PackageReference Include="Microsoft.DotNet.GenAPI"
104+
Version="$(MicrosoftDotNetGenApiVersion)"
105+
PrivateAssets="all"
106+
IsImplicitlyDefined="true"
107+
Condition="'$(DotNetBuildFromSource)' != 'true'" />
108+
</ItemGroup>
91109

92110
<!-- Generate a .txt file with all public types of the project referenced by ProjectForGenAPIDocIdGeneration (e.g. System.Private.CoreLib or System.Private.Uri implementation assembly).
93111
This file is then later on passed to GenAPI as the list of types which should be "split out" with the conditional compilation logic. -->

src/coreclr/System.Private.CoreLib/System.Private.CoreLib.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -348,8 +348,7 @@
348348

349349
<!-- Import refererence assembly and ApiCompat logic -->
350350
<PropertyGroup>
351-
<IsSourceProject>true</IsSourceProject>
351+
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
352352
</PropertyGroup>
353-
<Import Project="$(RepositoryEngineeringDir)resolveContract.props" />
354353
<Import Project="$(RepositoryEngineeringDir)resolveContract.targets" />
355354
</Project>

src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -608,8 +608,7 @@
608608

609609
<!-- Import refererence assembly and ApiCompat logic -->
610610
<PropertyGroup>
611-
<IsSourceProject>true</IsSourceProject>
611+
<ApiCompatValidateAssemblies>true</ApiCompatValidateAssemblies>
612612
</PropertyGroup>
613-
<Import Project="$(RepositoryEngineeringDir)resolveContract.props" />
614613
<Import Project="$(RepositoryEngineeringDir)resolveContract.targets" />
615614
</Project>

src/libraries/Directory.Build.props

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070

7171
<Import Project="NetCoreAppLibrary.props" />
7272
<Import Project="$(RepositoryEngineeringDir)referenceAssemblies.props" Condition="'$(IsReferenceAssemblyProject)' == 'true'" />
73-
<Import Project="$(RepositoryEngineeringDir)resolveContract.props" />
7473

7574
<PropertyGroup>
7675
<!-- Default any assembly not specifying a key to use the Open Key -->
@@ -84,6 +83,7 @@
8483

8584
<!-- Language configuration -->
8685
<PropertyGroup>
86+
<ApiCompatValidateAssemblies Condition="'$(IsSourceProject)' == 'true'">true</ApiCompatValidateAssemblies>
8787
<GenFacadesIgnoreBuildAndRevisionMismatch>true</GenFacadesIgnoreBuildAndRevisionMismatch>
8888
<!-- Disable analyzers for tests and unsupported projects -->
8989
<RunAnalyzers Condition="'$(IsTestProject)' != 'true' and '$(IsSourceProject)' != 'true' and '$(IsGeneratorProject)' != 'true'">false</RunAnalyzers>

src/libraries/Directory.Build.targets

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@
125125

126126
<Import Project="$(RepositoryEngineeringDir)codeOptimization.targets" />
127127
<Import Project="$(RepositoryEngineeringDir)references.targets" />
128-
<Import Project="$(RepositoryEngineeringDir)resolveContract.targets" />
128+
<Import Project="$(RepositoryEngineeringDir)resolveContract.targets" Condition="'$(IsSourceProject)' == 'true'" />
129129
<Import Project="$(RepositoryEngineeringDir)testing\tests.targets" Condition="'$(EnableTestSupport)' == 'true'" />
130130
<Import Project="$(RepositoryEngineeringDir)testing\linker\trimmingTests.targets" Condition="'$(IsPublishedAppTestProject)' == 'true'" />
131131
<Import Project="$(RepositoryEngineeringDir)testing\runtimeConfiguration.targets" />
@@ -141,11 +141,16 @@
141141
<PackageReference Include="Microsoft.DotNet.Build.Tasks.TargetFramework" Version="$(MicrosoftDotNetBuildTasksTargetFrameworkVersion)" PrivateAssets="all" IsImplicitlyDefined="true" />
142142
</ItemGroup>
143143

144-
<ItemGroup Condition="'$(IsSourceProject)' == 'true' or '$(IsReferenceAssemblyProject)' == 'true' or '$(IsPartialFacadeAssembly)' == 'true'">
145-
<PackageReference Include="Microsoft.DotNet.GenAPI" Condition="'$(DotNetBuildFromSource)' != 'true'" Version="$(MicrosoftDotNetGenApiVersion)" PrivateAssets="all" IsImplicitlyDefined="true" />
144+
<!-- Reference the GenFacades package when the assembly is a partial facade or a PNSE throwing. -->
145+
<ItemGroup Condition="'$(IsPartialFacadeAssembly)' == 'true' or
146+
'$(GeneratePlatformNotSupportedAssembly)' == 'true' or
147+
'$(GeneratePlatformNotSupportedAssemblyMessage)' != ''">
146148
<PackageReference Include="Microsoft.DotNet.GenFacades" Version="$(MicrosoftDotNetGenFacadesVersion)" PrivateAssets="all" IsImplicitlyDefined="true" />
147149
</ItemGroup>
148150

151+
<!-- GenFacades target that is intentionally empty since we no longer need it. -->
152+
<Target Name="ResolveMatchingContract" />
153+
149154
<!--
150155
Do not clean binplace assets in the ref targeting pack to avoid incremental build failures
151156
when the SDK tries to resolve the assets from the FrameworkList.

src/libraries/System.DirectoryServices/src/ILLink/ILLink.Suppressions.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<argument>ILLink</argument>
66
<argument>IL2050</argument>
77
<property name="Scope">member</property>
8-
<property name="Target">M:System.DirectoryServices.Interop.UnsafeNativeMethods.ADsOpenObject(System.String,System.String,System.String,System.Int32,System.Guid@,System.Object@)</property>
8+
<property name="Target">M:System.DirectoryServices.UnsafeNativeMethods.ADsOpenObject(System.String,System.String,System.String,System.Int32,System.Guid@,System.Object@)</property>
99
</attribute>
1010
<attribute fullname="System.Diagnostics.CodeAnalysis.UnconditionalSuppressMessageAttribute">
1111
<argument>ILLink</argument>

0 commit comments

Comments
 (0)