Run APICompat for netstandard2.1 vs netcoreapp3.0
authorwtgodbe <wigodbe@microsoft.com>
Fri, 18 Jan 2019 00:01:06 +0000 (16:01 -0800)
committerwtgodbe <wigodbe@microsoft.com>
Wed, 30 Jan 2019 18:47:42 +0000 (10:47 -0800)
Commit migrated from https://github.com/dotnet/corefx/commit/c05b1971dc2e554522218810f663f534b75934e6

20 files changed:
eng/dependencies.props
src/libraries/System.Buffers/ref/Configurations.props
src/libraries/System.Buffers/ref/System.Buffers.csproj
src/libraries/System.Reflection.DispatchProxy/ref/Configurations.props
src/libraries/System.Reflection.DispatchProxy/ref/System.Reflection.DispatchProxy.csproj
src/libraries/external/netstandard/netstandard.depproj
src/libraries/pkg/Microsoft.Private.CoreFx.UAP/Microsoft.Private.CoreFx.UAP.pkgproj
src/libraries/pkg/Microsoft.Private.PackageBaseline/packageIndex.json
src/libraries/shims/ApiCompat.proj
src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard.txt [moved from src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard20.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandardOnly.txt [moved from src/libraries/shims/ApiCompatBaseline.netcoreapp.netstandard20Only.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.netcoreappaot.netstandard.txt [moved from src/libraries/shims/ApiCompatBaseline.netcoreappaot.netstandard20.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.netcoreappaot.netstandardOnly.txt [moved from src/libraries/shims/ApiCompatBaseline.netcoreappaot.netstandard20Only.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.netfx.netstandard.txt [moved from src/libraries/shims/ApiCompatBaseline.netfx.netstandard20.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.netfx.netstandardOnly.txt [moved from src/libraries/shims/ApiCompatBaseline.netfx.netstandard20Only.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.uap.netstandard.txt [moved from src/libraries/shims/ApiCompatBaseline.uap.netstandard20.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.uap.netstandardOnly.txt [moved from src/libraries/shims/ApiCompatBaseline.uap.netstandard20Only.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.uapaot.netstandard.txt [moved from src/libraries/shims/ApiCompatBaseline.uapaot.netstandard20.txt with 100% similarity]
src/libraries/shims/ApiCompatBaseline.uapaot.netstandardOnly.txt [moved from src/libraries/shims/ApiCompatBaseline.uapaot.netstandard20Only.txt with 100% similarity]
src/libraries/shims/shims.proj

index 760c8ed..8fcc85a 100644 (file)
@@ -20,7 +20,6 @@
 
   <!-- Product dependency versions. -->
   <PropertyGroup>
-    <NETStandardLibraryPackageVersion>2.0.3</NETStandardLibraryPackageVersion>
     <NETStandardLibraryPackageId>NETStandard.Library</NETStandardLibraryPackageId>
 
     <!-- SNI runtime package -->
       <ElementName>MicrosoftNETCorePlatformsPackageVersion</ElementName>
       <PackageId>Microsoft.NETCore.Platforms</PackageId>
     </XmlUpdateStep>
-    <XmlUpdateStep Include="Standard">
-      <Path>$(MSBuildThisFileFullPath)</Path>
-      <ElementName>NETStandardLibraryPackageVersion</ElementName>
-      <PackageId>$(NETStandardLibraryPackageId)</PackageId>
-    </XmlUpdateStep>
     <XmlUpdateStep Include="ProjectNTfs">
       <Path>$(MSBuildThisFileFullPath)</Path>
       <ElementName>ProjectNTfsExpectedPrerelease</ElementName>
index 78953df..30b6227 100644 (file)
@@ -3,6 +3,8 @@
   <PropertyGroup>
     <BuildConfigurations>
       netstandard;
+      netcoreapp;
+      uap;
     </BuildConfigurations>
   </PropertyGroup>
 </Project>
index d0716ea..745c95b 100644 (file)
@@ -4,9 +4,12 @@
          Can be removed when API is added and this assembly is versioned to 4.1.* -->
     <AssemblyVersion>4.0.2.0</AssemblyVersion>
     <ProjectGuid>{11AE73F7-3532-47B9-8FF6-B4F22D76456C}</ProjectGuid>
-    <Configurations>netstandard-Debug;netstandard-Release</Configurations>
+    <Configurations>netstandard-Debug;netstandard-Release;netcoreapp-Debug;netcoreapp-Release;uap-Debug;uap-Release</Configurations>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="System.Buffers.cs" />
   </ItemGroup>
+  <ItemGroup Condition="'$(TargetGroup)' == 'uap' OR '$(TargetGroup)' == 'netcoreapp'">
+    <ProjectReference Include="..\..\System.Runtime\ref\System.Runtime.csproj" />
+  </ItemGroup>
 </Project>
\ No newline at end of file
index 637e93f..f6dd531 100644 (file)
@@ -2,6 +2,7 @@
 <Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup>
     <BuildConfigurations>
+      netcoreapp;
       netstandard;
       uap10.0.16299;
       uap;
index 9c13d27..2c3078e 100644 (file)
@@ -1,7 +1,7 @@
 <Project Sdk="Microsoft.NET.Sdk">
   <PropertyGroup>
     <ProjectGuid>{7DF3C428-AAD6-41C7-98E6-6CACFD5C391E}</ProjectGuid>
-    <Configurations>netstandard-Debug;netstandard-Release;uap-Debug;uap-Release;uap10.0.16299-Debug;uap10.0.16299-Release</Configurations>
+    <Configurations>netstandard-Debug;netstandard-Release;uap-Debug;uap-Release;uap10.0.16299-Debug;uap10.0.16299-Release;netcoreapp-Debug;netcoreapp-Release</Configurations>
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="System.Reflection.DispatchProxy.cs" />
@@ -9,7 +9,7 @@
   <ItemGroup Condition="'$(TargetGroup)' == 'uap10.0.16299'">
     <Reference Include="System.Runtime" />
   </ItemGroup>
-  <ItemGroup Condition="'$(TargetGroup)' == 'uap'">
+  <ItemGroup Condition="'$(TargetGroup)' == 'uap' OR '$(TargetGroup)' == 'netcoreapp'">
     <ProjectReference Include="..\..\System.Runtime\ref\System.Runtime.csproj" />
   </ItemGroup>
 </Project>
\ No newline at end of file
index 04e7460..efc29e5 100644 (file)
     </BinPlaceConfiguration>
   </ItemGroup>
 
-  <Target Name="AddNETStandardRefs" AfterTargets="ResolveReferences"
+  <Target Name="AddNETStandard21Refs" AfterTargets="ResolveReferences">
+    <PropertyGroup>
+      <_NETStandard21RefFolder>$(PackagesDir)$(NETStandardLibraryPackageId.ToLower())\$(NETStandardLibraryPackageVersion)\build\netstandard2.1\ref</_NETStandard21RefFolder>
+    </PropertyGroup>
+
+    <ItemGroup>
+      <_NetStandard21Files Include="$(_NETStandard21RefFolder)\*.dll" />
+    </ItemGroup>
+
+    <Error Condition="'@(_NetStandard21Files)' == ''" Text="Could not find package assets for netstandard2.1" />
+
+    <Copy SourceFiles="@(_NetStandard21Files)"
+          DestinationFolder="$(NetStandard21RefPath)"
+          SkipUnchangedFiles="true" />
+  </Target>
+
+  <Target Name="AddNETStandard20Refs" AfterTargets="ResolveReferences"
           Condition="'$(_NETStandardTFMFolder)' != ''">
     <PropertyGroup>
       <_NETStandardRefFolder>$(PackagesDir)$(NETStandardLibraryPackageId.ToLower())\$(NETStandardLibraryPackageVersion)\build\$(_NETStandardTFMFolder)\ref</_NETStandardRefFolder>
         Exclude="@(ExcludeNetStandardRefs -> '$(_NETStandardRefFolder)\%(Identity).dll')" />
     </ItemGroup>
 
+    <Error Condition="'@(NetStandardRefs)' == ''" Text="Could not find package assets for netstandard2.0" />
+
     <ItemGroup>
       <Reference Include="@(NetStandardRefs)">
         <Private>False</Private>
index 49c3082..53e948f 100644 (file)
     <IgnoredReference Include="System.Private.CoreLib" />
     <IgnoredReference Include="Windows" />
     <IgnoredReference Include="System.Private.Interop" />
-    <IgnoredReference Include="Microsoft.Win32.Registry" /> <!-- Ignore for now since it's being exclude from closure below. Issue https://github.com/dotnet/corefx/issues/15966 -->
-    <IgnoredReference Include="System.IO.IsolatedStorage" /> <!-- Ignore for now since it's being exclude from closure below. Issue https://github.com/dotnet/corefx/issues/15968 -->
+    <IgnoredReference Include="System.Reflection.Emit" /> <!-- Add an issue for this -->
+    <IgnoredReference Include="System.Reflection.Emit.ILGeneration" />
+    <IgnoredReference Include="System.Reflection.Emit.Lightweight" />
 
-    <ExcludeFromClosure Include="System.IO.IsolatedStorage" /> <!-- IsolatedStorage depends on AccessControl which is not available for UAP -->
-    <ExcludeFromClosure Include="Microsoft.Win32.Registry" /> <!-- Most likely this one will be removed from the package, it's just there today for the closure -->
     <!-- Exclude shims from the closure verification -->
     <ExcludeFromClosure Include="mscorlib" />
     <ExcludeFromClosure Include="System" />
index 337befe..8ed6de0 100644 (file)
     "netstandard": {
       "InboxOn": {
         "netcoreapp2.0": "2.0.0.0",
+        "netcoreapp3.0": "2.1.0.0",
         "net461": "2.0.0.0",
         "netstandard2.0": "2.0.0.0",
         "uap10.0.16299": "2.0.0.0",
-        "uap10.0.16300": "2.0.1.0"
+        "uap10.0.16300": "2.1.0.0"
       }
     },
     "NETStandard.Library": {
index 63eeecc..9df23e7 100644 (file)
@@ -13,8 +13,8 @@
     <ApiCompatResponseFile>$(IntermediateOutputPath)/apicompat.rsp</ApiCompatResponseFile>
     <ApiCompatBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netfx461.txt</ApiCompatBaselineFile>
     <ApiCompatBaselineIgnoreFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netfx461.ignore.txt</ApiCompatBaselineIgnoreFile>
-    <ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard20.txt</ApiCompatNSBaselineFile>
-    <ApiCompatNSOnlyBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard20Only.txt</ApiCompatNSOnlyBaselineFile>
+    <ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandard.txt</ApiCompatNSBaselineFile>
+    <ApiCompatNSOnlyBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.$(TargetGroup).netstandardOnly.txt</ApiCompatNSOnlyBaselineFile>
     <ApiCompatImplementationDirs>$(RefPath),$(GenFacadesOutputPath)</ApiCompatImplementationDirs>
     <!-- If we are targeting uap or uapaot run ApiCompat against the implementation assemblies instead since they don't match the reference assemblies -->
     <!-- also include $(RefPath) last to pick up windows.winmd dependency, which we don't place in RuntimePath -->
     <Error Condition="'$(ApiCompatExitCode)' != '0'" Text="ApiCompat failed comparing netfx to $(TargetGroup)" />
 
     <PropertyGroup>
-      <NETStandard20OnlyRef>$(NetStandardRefPath)/netstandard.dll</NETStandard20OnlyRef>
-      <!-- For netcoreapp also pass in System.Runtime to workaround issue in apicompat tool when it cannot find a core assembly -->
-      <NETStandard20OnlyRef Condition="'$(TargetGroup)' == 'netcoreapp'">$(NETStandard20OnlyRef);$(RefPath)\System.Runtime.dll</NETStandard20OnlyRef>
+      <NETStandard21OnlyRef>$(NetStandard21RefPath)/netstandard.dll</NETStandard21OnlyRef>
     </PropertyGroup>
 
-    <Exec Command="$(_ApiCompatCommand) &quot;$(NETStandard20OnlyRef)&quot; @&quot;$(ApiCompatResponseFile)&quot; --baseline $(ApiCompatNSOnlyBaselineFile)"
+    <Exec Command="$(_ApiCompatCommand) &quot;$(NETStandard21OnlyRef)&quot; @&quot;$(ApiCompatResponseFile)&quot; --baseline $(ApiCompatNSOnlyBaselineFile)"
           CustomErrorRegularExpression="^[a-zA-Z]+ :"
           StandardOutputImportance="Low"
           IgnoreExitCode="true"
@@ -77,6 +75,7 @@
 
     <Error Condition="'$(ApiCompatExitCode)' != '0'" Text="ApiCompat failed comparing netstandard.dll to $(TargetGroup)" />
 
+    <!-- TODO: Once the repo targets netstandard2.1, have this instance of APICompat run against NetStandard21RefPath -->
     <Exec Command="$(_ApiCompatCommand) &quot;$(NetStandardRefPath)&quot; --baseline &quot;$(ApiCompatNSBaselineFile)&quot; @&quot;$(ApiCompatResponseFile)&quot;"
           CustomErrorRegularExpression="^[a-zA-Z]+ :"
           StandardOutputImportance="Low"
index c1846db..51e900d 100644 (file)
@@ -17,7 +17,9 @@
         <StrongNameSig Condition="'%(NetfxReference.StrongNameSig)' == ''">StrongName</StrongNameSig>
         <StrongNameSig Condition="'%(NetfxReference.StrongNameSig)' != ''">%(NetfxReference.StrongNameSig)</StrongNameSig>
       </NetFxContracts>
-      <NETStandardContracts Include="$(NetStandardRefPath)netstandard.dll" />
+      <!-- TODO - once we retarget everything to netstandard2.1, remove netcoreapp2.0 reference to netstandard2.0 netstandard.dll -->
+      <NETStandardContracts Condition="'$(TargetGroup)' == 'netcoreapp2.0'" Include="$(NetStandardRefPath)netstandard.dll" />
+      <NETStandardContracts Condition="'$(TargetGroup)' != 'netcoreapp2.0'" Include="$(NetStandard21RefPath)netstandard.dll" />
       <GenFacadesContracts Include="@(NetFxContracts);@(NETStandardContracts)" />
       <GenFacadesSeeds Include="$(RefPath)*.dll" />
     </ItemGroup>