diff options
113 files changed, 843 insertions, 963 deletions
diff --git a/Directory.Build.props b/Directory.Build.props index b9cc1470bb7..5104b073389 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -304,7 +304,6 @@ <PropertyGroup> <CustomBeforeNoTargets>$(RepositoryEngineeringDir)NoTargetsSdk.BeforeTargets.targets</CustomBeforeNoTargets> - <CustomAfterTraversalProps>$(RepositoryEngineeringDir)TraversalSdk.AfterProps.props</CustomAfterTraversalProps> <CustomAfterTraversalTargets>$(RepositoryEngineeringDir)TraversalSdk.AfterTargets.targets</CustomAfterTraversalTargets> </PropertyGroup> </Project> diff --git a/docs/coding-guidelines/project-guidelines.md b/docs/coding-guidelines/project-guidelines.md index 486a0afd091..e2b281c6790 100644 --- a/docs/coding-guidelines/project-guidelines.md +++ b/docs/coding-guidelines/project-guidelines.md @@ -6,10 +6,13 @@ In order to work in the dotnet/runtime repo you must first run build.cmd/sh from - Restore tools - Restore external dependencies - CoreCLR - Copy to `bin\runtime\$(BuildTargetFramework)-$(TargetOS)-$(Configuration)-$(TargetArchitecture)` -- Build targeting pack - - Build src\libraries\ref.proj which builds all references assembly projects. For reference assembly project information see [ref](#ref) -- Build product - - Build src\libraries\src.proj which builds all the source library projects. For source library project information see [src](#src). +- Build shared framework projects + - Build src\libraries\sfx.proj which builds all shared framework projects. +- Build out of band projects + - Build src\libraries\oob.proj which builds all the out-of-band (OOB) projects. + +For reference assembly project information see [ref](#ref) +For source library project information see [src](#src) # Build Pivots Below is a list of all the various options we pivot the project builds on: diff --git a/eng/NoTargetsSdk.BeforeTargets.targets b/eng/NoTargetsSdk.BeforeTargets.targets index 9afaad0e75e..3b516d31887 100644 --- a/eng/NoTargetsSdk.BeforeTargets.targets +++ b/eng/NoTargetsSdk.BeforeTargets.targets @@ -1,9 +1,8 @@ <Project> <PropertyGroup> - <!-- NoTargets SDK needs a TFM set. Use the latest .NETCoreApp TFM that is supported by the SDK. - Only set a default if the project isn't multi-targeting. --> - <TargetFramework Condition="'$(TargetFramework)' == '' and '$(TargetFrameworks)' == ''">$(NetCoreAppToolCurrent)</TargetFramework> + <!-- NoTargets SDK needs a TFM set. Set a default if the project doesn't multi target. --> + <TargetFramework Condition="'$(TargetFramework)' == '' and '$(TargetFrameworks)' == ''">$(NetCoreAppCurrent)</TargetFramework> </PropertyGroup> </Project>
\ No newline at end of file diff --git a/eng/Subsets.props b/eng/Subsets.props index 809af20968e..1213b5407e9 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -71,7 +71,7 @@ <DefaultLibrariesSubsets Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == '' or '$(BuildAllConfigurations)' == 'true'">libs.native+</DefaultLibrariesSubsets> - <DefaultLibrariesSubsets>$(DefaultLibrariesSubsets)libs.ref+libs.src</DefaultLibrariesSubsets> + <DefaultLibrariesSubsets>$(DefaultLibrariesSubsets)libs.sfx+libs.oob</DefaultLibrariesSubsets> <DefaultLibrariesSubsets Condition="'$(DotNetBuildFromSource)' != 'true'">$(DefaultLibrariesSubsets)+libs.pretest</DefaultLibrariesSubsets> <DefaultHostSubsets>host.native+host.tools</DefaultHostSubsets> @@ -144,8 +144,10 @@ <!-- Libs --> <SubsetName Include="Libs" Description="The libraries native part, refs and source assemblies, test infra and packages, but NOT the tests (use Libs.Tests to request those explicitly). Equivalent to: $(DefaultLibrariesSubsets)" /> <SubsetName Include="Libs.Native" Description="The native libraries used in the shared framework." /> - <SubsetName Include="Libs.Ref" Description="The managed reference libraries." /> - <SubsetName Include="Libs.Src" Description="The managed implementation libraries." /> + <SubsetName Include="Libs.Sfx" Description="The managed shared framework libraries." /> + <SubsetName Include="Libs.Oob" Description="The managed out-of-band libraries." /> + <SubsetName Include="Libs.Ref" OnDemand="true" Description="The managed reference libraries." /> + <SubsetName Include="Libs.Src" OnDemand="true" Description="The managed implementation libraries." /> <SubsetName Include="Libs.PreTest" Description="Test assets which are necessary to run tests." /> <SubsetName Include="Libs.Packages" Description="The projects that produce NuGet packages from libraries." /> <SubsetName Include="Libs.Tests" OnDemand="true" Description="The test projects. Note that building this doesn't execute tests: you must also pass the '-test' argument." /> @@ -322,12 +324,20 @@ <ProjectToBuild Include="$(SharedNativeRoot)libs\build-native.proj" Category="libs" /> </ItemGroup> - <ItemGroup Condition="$(_subset.Contains('+libs.ref+'))"> - <ProjectToBuild Include="$(LibrariesProjectRoot)ref.proj" Category="libs" /> + <ItemGroup Condition="$(_subset.Contains('+libs.ref+')) or $(_subset.Contains('+libs.src+')) or $(_subset.Contains('+libs.sfx+'))"> + <ProjectToBuild Include="$(LibrariesProjectRoot)sfx.proj" + Category="libs" + Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or + '$(BuildTargetFramework)' == '' or + '$(BuildAllConfigurations)' == 'true'"> + <AdditionalProperties Condition="$(_subset.Contains('+libs.ref+'))">%(AdditionalProperties);RefOnly=true</AdditionalProperties> + </ProjectToBuild> </ItemGroup> - <ItemGroup Condition="$(_subset.Contains('+libs.src+'))"> - <ProjectToBuild Include="$(LibrariesProjectRoot)src.proj" Category="libs" /> + <ItemGroup Condition="$(_subset.Contains('+libs.ref+')) or $(_subset.Contains('+libs.src+')) or $(_subset.Contains('+libs.oob+'))"> + <ProjectToBuild Include="$(LibrariesProjectRoot)oob.proj" Category="libs"> + <AdditionalProperties Condition="$(_subset.Contains('+libs.ref+'))">%(AdditionalProperties);RefOnly=true</AdditionalProperties> + </ProjectToBuild> </ItemGroup> <ItemGroup Condition="$(_subset.Contains('+mono.wasmruntime+'))"> diff --git a/eng/TraversalSdk.AfterProps.props b/eng/TraversalSdk.AfterProps.props deleted file mode 100644 index 9f3f5fdea7a..00000000000 --- a/eng/TraversalSdk.AfterProps.props +++ /dev/null @@ -1,8 +0,0 @@ -<Project> - - <PropertyGroup> - <!-- Build for NetCoreAppCurrent by default if no BuildTargetFramework is supplied or if not all configurations are built. --> - <TraversalGlobalProperties Condition="'$(BuildAllConfigurations)' != 'true'">BuildTargetFramework=$([MSBuild]::ValueOrDefault('$(BuildTargetFramework)', '$(NetCoreAppCurrent)'))</TraversalGlobalProperties> - </PropertyGroup> - -</Project> diff --git a/eng/TraversalSdk.AfterTargets.targets b/eng/TraversalSdk.AfterTargets.targets index f88c48dc867..4eac57bd138 100644 --- a/eng/TraversalSdk.AfterTargets.targets +++ b/eng/TraversalSdk.AfterTargets.targets @@ -9,10 +9,17 @@ <VSTestDependsOn>$(VSTestDependsOn);ResolveP2PReferences</VSTestDependsOn> <PackDependsOn>$(PackDependsOn);ResolveP2PReferences</PackDependsOn> <PublishDependsOn>$(PublishDependsOn);ResolveP2PReferences</PublishDependsOn> + <GetTargetPathDependsOn>ResolveP2PReferences</GetTargetPathDependsOn> + <!-- Filter out ProjectReferences which aren't compatible with the project's TargetFramework. --> + <OmitIncompatibleProjectReferences>true</OmitIncompatibleProjectReferences> </PropertyGroup> <ItemGroup Condition="'$(FilterTraversalProjectReferences)' == 'true'"> - <ProjectReference Update="@(ProjectReference)" SkipGetTargetFrameworkProperties="false" /> + <!-- Override the Traversal SDK setting as filtering relies on the TargetFrameworkProperties being fetched + and don't flow the BuildTargetFramework property down. --> + <ProjectReference Update="@(ProjectReference)" + SkipGetTargetFrameworkProperties="false" + UndefineProperties="%(UndefineProperties);BuildTargetFramework" /> </ItemGroup> -</Project>
\ No newline at end of file +</Project> diff --git a/eng/generators.targets b/eng/generators.targets index f13e56995af..e7835650b04 100644 --- a/eng/generators.targets +++ b/eng/generators.targets @@ -13,8 +13,7 @@ - references System.Runtime.InteropServices --> <EnabledGenerators Include="DllImportGenerator" Condition="'$(EnableDllImportGenerator)' == '' - and '$(IsFrameworkSupportFacade)' != 'true' - and '$(IsSourceProject)' == 'true' + and '$(IsRuntimeAssembly)' == 'true' and '$(MSBuildProjectExtension)' == '.csproj' and ( ('@(Reference)' != '' @@ -25,8 +24,7 @@ and '$(DisableImplicitAssemblyReferences)' == 'false'))" /> <EnabledGenerators Include="DllImportGenerator" Condition="'$(EnableDllImportGenerator)' == '' - and '$(IsFrameworkSupportFacade)' != 'true' - and '$(IsSourceProject)' == 'true' + and '$(IsRuntimeAssembly)' == 'true' and '$(MSBuildProjectExtension)' == '.csproj' and ('$(TargetFrameworkIdentifier)' == '.NETStandard' or '$(TargetFrameworkIdentifier)' == '.NETFramework' or ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionLessThan($(TargetFrameworkVersion), '$(NetCoreAppCurrentVersion)'))))" /> </ItemGroup> diff --git a/eng/illink.targets b/eng/illink.targets index eecd3163559..320d21715ef 100644 --- a/eng/illink.targets +++ b/eng/illink.targets @@ -198,14 +198,22 @@ </ItemGroup> </Target> - <!-- ILLink.Tasks arguments common to runs for both individual libraries and for the entire runtime pack --> - <Target Name="SetCommonILLinkArgs"> + <Target Name="PrepareForAssembliesTrim"> + <!-- ILLink.Tasks arguments common to runs for both individual libraries and for the entire runtime pack --> <PropertyGroup> <!-- don't remove attributes after build, our tooling is not ready for that --> <ILLinkArgs>$(ILLinkArgs) --ignore-link-attributes true</ILLinkArgs> <!-- ignore unresolved references --> <ILLinkArgs>$(ILLinkArgs) --skip-unresolved true</ILLinkArgs> </PropertyGroup> + + <!-- When running from Desktop MSBuild, DOTNET_HOST_PATH is not set. + In this case, explicitly specify the path to the dotnet host. --> + <PropertyGroup Condition="'$(DOTNET_HOST_PATH)' == ''"> + <!-- This is defined when building in Visual Studio. --> + <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory> + <_DotNetHostFileName>$([System.IO.Path]::GetFileName('$(DotNetTool)'))</_DotNetHostFileName> + </PropertyGroup> </Target> <!-- ILLinkTrimAssembly @@ -215,7 +223,7 @@ <UsingTask TaskName="ILLink" AssemblyFile="$(ILLinkTasksAssembly)" Condition="'$(ILLinkTasksAssembly)' != ''" /> <Target Name="ILLinkTrimAssembly" Condition="'$(ILLinkTrimAssembly)' == 'true'" - DependsOnTargets="SetCommonILLinkArgs"> + DependsOnTargets="PrepareForAssembliesTrim"> <PropertyGroup> <!-- default action for assemblies with IsTrimmable attribute --> <ILLinkArgs>$(ILLinkArgs) --trim-mode skip</ILLinkArgs> @@ -285,21 +293,12 @@ <ILLinkArgs Condition="@(_DependencyDirectories->Count()) > 0">$(ILLinkArgs) -d @(_DependencyDirectories->'"%(Identity)"', ' -d ')</ILLinkArgs> </PropertyGroup> - <!-- When running from Desktop MSBuild, DOTNET_HOST_PATH is not set. - In this case, explicitly specify the path to the dotnet host. --> - <PropertyGroup Condition=" '$(DOTNET_HOST_PATH)' == '' "> - <!-- This is defined when building in Visual Studio. --> - <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory> - <_DotNetHostFileName>$([System.IO.Path]::GetFileName('$(DotNetTool)'))</_DotNetHostFileName> - </PropertyGroup> - <ILLink AssemblyPaths="" RootAssemblyNames="@(ILLinkTrimInputAssembly)" OutputDirectory="$(ILLinkTrimOutputPath)" ExtraArgs="$(ILLinkArgs)" ToolExe="$(_DotNetHostFileName)" ToolPath="$(_DotNetHostDirectory)" /> - </Target> <!-- ILLink reporting. diff --git a/eng/pipelines/common/templates/runtimes/build-test-job.yml b/eng/pipelines/common/templates/runtimes/build-test-job.yml index b05315fc785..0c933647923 100644 --- a/eng/pipelines/common/templates/runtimes/build-test-job.yml +++ b/eng/pipelines/common/templates/runtimes/build-test-job.yml @@ -74,7 +74,7 @@ jobs: - ${{ each variable in parameters.variables }}: - ${{ variable }} - name: liveRuntimeBuildParams - value: 'libs.ref -c Release -ci' + value: 'libs.sfx+libs.oob /p:RefOnly=true -c Release -ci' - name: compilerArg value: '' - ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.compilerName, 'gcc')) }}: diff --git a/eng/pipelines/runtime-official.yml b/eng/pipelines/runtime-official.yml index 1d404057335..c817f759a30 100644 --- a/eng/pipelines/runtime-official.yml +++ b/eng/pipelines/runtime-official.yml @@ -57,7 +57,7 @@ stages: - ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}: - template: /eng/common/templates/job/source-index-stage1.yml parameters: - sourceIndexBuildCommand: build.cmd -subset libs.ref+libs.src -binarylog -os Linux -ci + sourceIndexBuildCommand: build.cmd -subset libs.sfx+libs.oob -binarylog -os Linux -ci # # Build CoreCLR diff --git a/eng/pipelines/runtime-richnav.yml b/eng/pipelines/runtime-richnav.yml index df7918ee877..341ec115ebf 100644 --- a/eng/pipelines/runtime-richnav.yml +++ b/eng/pipelines/runtime-richnav.yml @@ -37,7 +37,7 @@ jobs: richCodeNavigationEnvironment: "production" richCodeNavigationLanguage: "csharp" timeoutInMinutes: 240 - buildArgs: -s libs.ref+libs.src -c debug -allConfigurations + buildArgs: -s libs.sfx+libs.oob -allConfigurations - template: /eng/pipelines/common/platform-matrix.yml parameters: diff --git a/eng/referenceAssemblies.props b/eng/referenceAssemblies.props index f61d15a3926..8c986b4475a 100644 --- a/eng/referenceAssemblies.props +++ b/eng/referenceAssemblies.props @@ -1,14 +1,9 @@ <Project> - <PropertyGroup Condition="'$(BuildAllProjects)' == 'true' and - !$(BuildTargetFramework.StartsWith('netstandard')) and - !$(BuildTargetFramework.StartsWith('net4'))"> - <AdditionalBuildTargetFrameworks>$(AdditionalBuildTargetFrameworks);netstandard2.0;netstandard2.1</AdditionalBuildTargetFrameworks> + <PropertyGroup> <!-- Reference assemblies are special and don't initialize fields or have empty finalizers, etc. --> <RunAnalyzers>false</RunAnalyzers> - </PropertyGroup> - <PropertyGroup> <!-- disable warnings about unused fields --> <NoWarn>$(NoWarn);CS0169;CS0649;CS8618</NoWarn> @@ -30,4 +25,5 @@ <_Parameter1_IsLiteral>true</_Parameter1_IsLiteral> </AssemblyAttribute> </ItemGroup> + </Project> diff --git a/eng/references.targets b/eng/references.targets index 4603fb98566..c73b8295397 100644 --- a/eng/references.targets +++ b/eng/references.targets @@ -16,19 +16,17 @@ <ItemGroup Condition="'@(ProjectReference)' != ''"> <_coreLibProjectReference Include="@(ProjectReference->WithMetadataValue('Identity', '$(CoreLibProject)'))" /> - <ProjectReference Update="@(_coreLibProjectReference)"> - <!-- Don't flow TargetFramework and Platform to use same inputs and outputs as the CoreLib's build as part of the runtime. --> - <UndefineProperties>$(UndefineProperties);TargetFramework;Platform</UndefineProperties> + <ProjectReference Update="@(_coreLibProjectReference)" + Private="false"> <SetConfiguration Condition="'$(RuntimeFlavor)' == 'CoreCLR' and '$(Configuration)' != '$(CoreCLRConfiguration)'">Configuration=$(CoreCLRConfiguration)</SetConfiguration> <SetConfiguration Condition="'$(RuntimeFlavor)' == 'Mono' and '$(Configuration)' != '$(MonoConfiguration)'">Configuration=$(MonoConfiguration)</SetConfiguration> - <Private>false</Private> </ProjectReference> <!-- If a CoreLib ProjectReference is present, make all P2P assets non transitive. --> - <ProjectReference Update="@(ProjectReference)" + <ProjectReference Update="@(ProjectReference->WithMetadataValue('PrivateAssets', ''))" PrivateAssets="all" - Condition="'@(_coreLibProjectReference)' != ''" /> + Condition="'$(IsSourceProject)' == 'true' and '@(_coreLibProjectReference)' != ''" /> </ItemGroup> <!-- Disable TargetArchitectureMismatch warning when we reference CoreLib as it is platform specific. --> @@ -78,8 +76,19 @@ <Target Name="ValidateReferenceAssemblyProjectReferences" AfterTargets="ResolveReferences" - Condition="'$(IsReferenceAssembly)' == 'true'"> + Condition="'$(IsReferenceAssembly)' == 'true' and + '$(SkipValidateReferenceAssemblyProjectReferences)' != 'true'"> <Error Condition="'%(ReferencePath.ReferenceSourceTarget)' == 'ProjectReference' and '%(ReferencePath.IsReferenceAssembly)' != 'true' and '%(ReferencePath.ReferenceAssembly)' == ''" Text="Reference assemblies must only reference other reference assemblies and '%(ReferencePath.ProjectReferenceOriginalItemSpec)' is not a reference assembly project and does not set 'ProduceReferenceAssembly'." /> </Target> + + <!-- An opt-in target to trim out private assemblies from the ref assembly ReferencePath. --> + <Target Name="TrimOutPrivateAssembliesFromReferencePath" + Condition="'$(CompileUsingReferenceAssemblies)' == 'true' and '$(TrimOutPrivateAssembliesFromReferencePath)' == 'true'" + AfterTargets="FindReferenceAssembliesForReferences"> + <ItemGroup> + <ReferencePathWithRefAssemblies Remove="@(ReferencePathWithRefAssemblies)" + Condition="$(NetCoreAppLibraryNoReference.Contains('%(Filename);'))" /> + </ItemGroup> + </Target> </Project> diff --git a/eng/resolveContract.targets b/eng/resolveContract.targets index 327273a100e..0e0cfc05c56 100644 --- a/eng/resolveContract.targets +++ b/eng/resolveContract.targets @@ -28,7 +28,10 @@ DependsOnTargets="ResolveProjectReferences" AfterTargets="GetTargetPathWithTargetPlatformMoniker"> <ItemGroup> - <TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContract)" /> + <!-- Allow to point to a different reference project than what GenFacades uses to generate the type forwards. --> + <TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContractOverride)" /> + <TargetPathWithTargetPlatformMoniker ReferenceAssembly="@(ResolvedMatchingContract)" + Condition="'@(ResolvedMatchingContractOverride)' == ''" /> </ItemGroup> </Target> @@ -38,7 +41,7 @@ Condition="'@(ProjectReference)' != '' and '@(_ResolvedProjectReferencePaths)' != ''"> <!-- If we have a ProjectReference to CoreLib, we need to compile against implementation assemblies. --> <PropertyGroup Condition="@(_ResolvedProjectReferencePaths->AnyHaveMetadataValue('MSBuildSourceProjectFile', '$(CoreLibProject)'))"> - <CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies> + <CompileUsingReferenceAssemblies Condition="'$(CompileUsingReferenceAssemblies)' == ''">false</CompileUsingReferenceAssemblies> </PropertyGroup> <!-- Clear the ReferenceAssembly attribute on resolved P2Ps that set SkipUseReferenceAssembly to true. --> <ItemGroup> diff --git a/eng/targetingpacks.targets b/eng/targetingpacks.targets index 33551569c64..63aa48746ab 100644 --- a/eng/targetingpacks.targets +++ b/eng/targetingpacks.targets @@ -146,6 +146,13 @@ <_targetingPackReferenceExclusion Include="@(DefaultReferenceExclusion)" /> </ItemGroup> + <!-- Filter out shims from the targeting pack references as an opt-in. --> + <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and + '$(SkipTargetingPackShimReferences)' == 'true'"> + <_targetingPackReferenceExclusion Include="@(NetFxReference)" /> + <_targetingPackReferenceExclusion Include="netstandard" /> + </ItemGroup> + <ItemGroup> <_targetingPackReferenceWithProjectName Include="@(Reference->WithMetadataValue('ExternallyResolved', 'true')->Metadata('Filename'))" OriginalIdentity="%(Identity)" /> diff --git a/eng/versioning.targets b/eng/versioning.targets index 3a40200c173..f31612f41a4 100644 --- a/eng/versioning.targets +++ b/eng/versioning.targets @@ -107,7 +107,10 @@ <Target Name="AddOSPlatformAttributes" BeforeTargets="GenerateAssemblyInfo" AfterTargets="PrepareForBuild" - Condition="'$(TargetPlatformIdentifier)' == '' and '$(IsTestProject)' != 'true' and '$(TargetFrameworkIdentifier)' != '.NETFramework'"> + Condition="'$(TargetPlatformIdentifier)' == '' and + '$(IsTestProject)' != 'true' and + '$(TargetFrameworkIdentifier)' != '.NETFramework' + and '$(AddOSPlatformAttributes)' != 'false'"> <!-- Defensively de-dupe the values --> <ItemGroup> <_unsupportedOSPlatforms Include="$(UnsupportedOSPlatforms)" /> @@ -133,12 +136,15 @@ </ItemGroup> </Target> - <!-- Removes assembly level attributes from test projects. --> - <Target Name="RemoveSupportedOSPlatformAttributeFromTestProjects" + <!-- Remove assembly level attributes from certain projects. + Use a target for that until https://github.com/dotnet/sdk/issues/14836 is implemented. --> + <Target Name="RemoveSupportedOSTargetPlatformAttributeFromProjects" AfterTargets="GetAssemblyAttributes" - Condition="'$(IsTestProject)' == 'true'"> + BeforeTargets="CreateGeneratedAssemblyInfoInputsCacheFile"> <ItemGroup> - <AssemblyAttribute Remove="System.Runtime.Versioning.SupportedOSPlatformAttribute" /> + <AssemblyAttribute Remove="System.Runtime.Versioning.SupportedOSPlatformAttribute" + Condition="'$(IsTestProject)' == 'true' or '$(AddOSPlatformAttributes)' == 'false'" /> + <!-- Don't include target platform attributes, since we use the target platform to represent RIDs instead. --> <AssemblyAttribute Remove="System.Runtime.Versioning.TargetPlatformAttribute" /> </ItemGroup> </Target> diff --git a/global.json b/global.json index 7850e7db3d0..d7074d2befb 100644 --- a/global.json +++ b/global.json @@ -15,8 +15,8 @@ "Microsoft.DotNet.Arcade.Sdk": "7.0.0-beta.22114.7", "Microsoft.DotNet.Helix.Sdk": "7.0.0-beta.22114.7", "Microsoft.DotNet.SharedFramework.Sdk": "7.0.0-beta.22114.7", - "Microsoft.Build.NoTargets": "3.1.0", - "Microsoft.Build.Traversal": "3.0.23", + "Microsoft.Build.NoTargets": "3.3.0", + "Microsoft.Build.Traversal": "3.1.3", "Microsoft.NET.Sdk.IL": "7.0.0-preview.2.22113.2" } } diff --git a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props index afc33ec68ee..25f85539d73 100644 --- a/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props +++ b/src/installer/pkg/sfx/Microsoft.NETCore.App/Directory.Build.props @@ -64,7 +64,6 @@ </PropertyGroup> <Import Project="$(LibrariesProjectRoot)NetCoreAppLibrary.props" /> - <Import Project="$(LibrariesProjectRoot)shims/netfxreference.props" /> <ItemGroup> <!-- Public libraries and shims --> diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index 961c33028ea..4e62339ce80 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -107,9 +107,6 @@ <UseAppBundleRootForBuildingTests Condition="'$(ArchiveTests)' == 'true' and '$(BuildTestsOnHelix)' != 'true' and '$(TargetsAppleMobile)' == 'true'">true</UseAppBundleRootForBuildingTests> <AppBundleRoot Condition="'$(UseAppBundleRootForBuildingTests)' == 'true'">$(ArtifactsDir)bundles\</AppBundleRoot> - <NetCoreAppCurrentRefPath>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'ref', '$(NetCoreAppCurrent)'))</NetCoreAppCurrentRefPath> - <NetCoreAppCurrentRuntimePath>$([MSBuild]::NormalizeDirectory('$(ArtifactsBinDir)', 'runtime', '$(NetCoreAppCurrent)-$(TargetOS)-$(Configuration)-$(TargetArchitecture)'))</NetCoreAppCurrentRuntimePath> - <CommonPathRoot>$([MSBuild]::NormalizeDirectory('$(LibrariesProjectRoot)', 'Common'))</CommonPathRoot> <CommonPath>$([MSBuild]::NormalizeDirectory('$(CommonPathRoot)', 'src'))</CommonPath> <CommonTestPath>$([MSBuild]::NormalizeDirectory('$(CommonPathRoot)', 'tests'))</CommonTestPath> diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets index f847f894bef..4e0f4aecebb 100644 --- a/src/libraries/Directory.Build.targets +++ b/src/libraries/Directory.Build.targets @@ -34,12 +34,26 @@ <NoWarn Condition="'$(IsPartialFacadeAssembly)' == 'true'">$(NoWarn);SYSLIB0003;SYSLIB0004;SYSLIB0015;SYSLIB0017;SYSLIB0021;SYSLIB0022;SYSLIB0023;SYSLIB0025;SYSLIB0032;SYSLIB0036</NoWarn> <!-- Reset these properties back to blank, since they are defaulted by Microsoft.NET.Sdk --> <WarningsAsErrors Condition="'$(WarningsAsErrors)' == 'NU1605'" /> - <IsNETCoreAppSrc Condition="'$(IsNETCoreAppSrc)' == '' and - '$(IsSourceProject)' == 'true' and + + <IsRuntimeAssembly Condition="'$(IsRuntimeAssembly)' == '' and + '$(IsReferenceAssembly)' != 'true' and + '$(IsGeneratorProject)' != 'true' and + '$(IsTestProject)' != 'true' and + '$(IsTestSupportProject)' != 'true' and + '$(UsingMicrosoftNoTargetsSdk)' != 'true' and + '$(UsingMicrosoftTraversalSdk)' != 'true'">true</IsRuntimeAssembly> + <IsRuntimeAndReferenceAssembly Condition="'$(IsRuntimeAndReferenceAssembly)' == '' and + '$(IsRuntimeAssembly)' == 'true' and + Exists('$(LibrariesProjectRoot)$(MSBuildProjectName)') and + !Exists('$(LibrariesProjectRoot)$(MSBuildProjectName)/ref') and + !$(MSBuildProjectName.StartsWith('System.Private'))">true</IsRuntimeAndReferenceAssembly> + + <!-- The source of truth for these IsNETCoreApp* properties is NetCoreAppLibrary.props. --> + <IsNETCoreAppSrc Condition="('$(IsRuntimeAssembly)' == 'true' or '$(IsRuntimeAndReferenceAssembly)' == 'true') and $(NetCoreAppLibrary.Contains('$(AssemblyName);'))">true</IsNETCoreAppSrc> - <IsNETCoreAppRef Condition="'$(IsNETCoreAppRef)' == '' and - '$(IsReferenceAssembly)' == 'true' and - $(NetCoreAppLibrary.Contains('$(AssemblyName);'))">true</IsNETCoreAppRef> + <IsNETCoreAppRef Condition="('$(IsReferenceAssembly)' == 'true' or '$(IsRuntimeAndReferenceAssembly)' == 'true') and + $(NetCoreAppLibrary.Contains('$(AssemblyName);')) and + !$(NetCoreAppLibraryNoReference.Contains('$(AssemblyName);'))">true</IsNETCoreAppRef> <!-- By default, disable implicit framework references for NetCoreAppCurrent libraries. --> <DisableImplicitFrameworkReferences Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and $([MSBuild]::VersionGreaterThanOrEquals($(TargetFrameworkVersion), '$(NETCoreAppCurrentVersion)')) and @@ -62,11 +76,6 @@ <!-- Libraries-specific binplacing properties --> <PropertyGroup> - <IsRuntimeAssembly Condition="'$(IsRuntimeAssembly)'=='' and '$(IsReferenceAssembly)' != 'true' and '$(BinPlaceRef)' != 'true' and '$(IsGeneratorProject)' != 'true' and '$(IsTestProject)' != 'true' and '$(IsTestSupportProject)' != 'true'">true</IsRuntimeAssembly> - <!-- Try to determine if this is a simple library without a ref project. - https://github.com/dotnet/runtime/issues/19584 is tracking cleaning this up --> - <IsRuntimeAndReferenceAssembly Condition="'$(IsRuntimeAndReferenceAssembly)' == '' and '$(IsRuntimeAssembly)' == 'true' and Exists('$(LibrariesProjectRoot)$(MSBuildProjectName)') and !Exists('$(LibrariesProjectRoot)$(MSBuildProjectName)/ref') and !$(MSBuildProjectName.StartsWith('System.Private'))">true</IsRuntimeAndReferenceAssembly> - <BinPlaceRef Condition="'$(BinPlaceRef)' == '' and ('$(IsReferenceAssembly)' == 'true' or '$(IsRuntimeAndReferenceAssembly)' == 'true')">true</BinPlaceRef> <BinPlaceRuntime Condition="'$(BinPlaceRuntime)' == '' and ('$(IsRuntimeAssembly)' == 'true' or '$(IsRuntimeAndReferenceAssembly)' == 'true')">true</BinPlaceRuntime> <BinPlaceForTargetVertical Condition="'$(BinPlaceForTargetVertical)' == ''">true</BinPlaceForTargetVertical> @@ -82,21 +91,20 @@ </Target> <ItemGroup Condition="'@(BinPlaceTargetFrameworks)' == ''"> - <!-- binplace to directories for the target vertical --> + <!-- Used by the runtime tests to prepare the CORE_ROOT layout. Don't use in libraries. --> <BinPlaceTargetFrameworks Include="$(NetCoreAppCurrent)-$(TargetOS)" Condition="'$(BinPlaceForTargetVertical)' == 'true'"> - <NativePath>$(NetCoreAppCurrentRuntimePath)</NativePath> - <RefPath>$(NetCoreAppCurrentRefPath)</RefPath> - <RuntimePath>$(NetCoreAppCurrentRuntimePath)</RuntimePath> + <NativePath>$(LibrariesAllBinArtifactsPath)</NativePath> + <RefPath>$(LibrariesAllRefArtifactsPath)</RefPath> + <RuntimePath>$(LibrariesAllBinArtifactsPath)</RuntimePath> </BinPlaceTargetFrameworks> <BinPlaceDir Include="$(MicrosoftNetCoreAppRefPackDir)analyzers\dotnet\$(AnalyzerLanguage)" Condition="'$(IsNETCoreAppAnalyzer)' == 'true'" /> <!-- Setup the shared framework directory for testing --> - <BinPlaceTargetFrameworks Include="$(NetCoreAppCurrent)-$(TargetOS)" - Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''"> - <NativePath >$(NetCoreAppCurrentTestHostSharedFrameworkPath)</NativePath> + <BinPlaceTargetFrameworks Include="$(NetCoreAppCurrent)-$(TargetOS)"> + <NativePath>$(NetCoreAppCurrentTestHostSharedFrameworkPath)</NativePath> <RuntimePath Condition="'$(IsNETCoreAppSrc)' == 'true'">$(NetCoreAppCurrentTestHostSharedFrameworkPath)</RuntimePath> </BinPlaceTargetFrameworks> @@ -110,8 +118,16 @@ <BinPlaceTargetFrameworks Include="@(AdditionalBinPlaceTargetFrameworks)" /> </ItemGroup> - <Import Project="$(RepositoryEngineeringDir)codeOptimization.targets" /> <Import Project="$(RepositoryEngineeringDir)targetingpacks.targets" /> + + <PropertyGroup> + <!-- Libraries non test projects shouldn't reference compat shims. --> + <SkipTargetingPackShimReferences Condition="'$(UseLocalTargetingRuntimePack)' == 'true' and + '$(IsTestProject)' != 'true' and + '$(IsTestSupportProject)' != 'true'">true</SkipTargetingPackShimReferences> + </PropertyGroup> + + <Import Project="$(RepositoryEngineeringDir)codeOptimization.targets" /> <Import Project="$(RepositoryEngineeringDir)references.targets" /> <Import Project="$(RepositoryEngineeringDir)resolveContract.targets" /> <Import Project="$(RepositoryEngineeringDir)testing\tests.targets" Condition="'$(EnableTestSupport)' == 'true'" /> diff --git a/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj b/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj index b53c4a6b663..5d4bd6530b8 100644 --- a/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj +++ b/src/libraries/Microsoft.Extensions.DependencyInjection.Specification.Tests/src/Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj @@ -6,9 +6,10 @@ <!-- Use targeting pack references instead of granular ones in the project file. --> <DisableImplicitAssemblyReferences>false</DisableImplicitAssemblyReferences> <CLSCompliant>false</CLSCompliant> - <IsRuntimeAssembly>false</IsRuntimeAssembly> <IsPackable>true</IsPackable> <PackageDescription>Suite of xUnit.net tests to check for container compatibility with Microsoft.Extensions.DependencyInjection.</PackageDescription> + <!-- this assembly doesn't need to be binplaced --> + <EnableBinPlacing>false</EnableBinPlacing> </PropertyGroup> <ItemGroup> diff --git a/src/libraries/NetCoreAppLibrary.props b/src/libraries/NetCoreAppLibrary.props index 7d7c71c6ecd..5c46266cb56 100644 --- a/src/libraries/NetCoreAppLibrary.props +++ b/src/libraries/NetCoreAppLibrary.props @@ -1,7 +1,33 @@ <Project> <PropertyGroup> <!-- The trailing semicolon is important for each entry! --> + <NetFxReference> + mscorlib; + Microsoft.VisualBasic; + System; + System.ComponentModel.DataAnnotations; + System.Configuration; + System.Core; + System.Data; + System.Drawing; + System.IO.Compression.FileSystem; + System.Net; + System.Numerics; + System.Runtime.Serialization; + System.Security; + System.ServiceProcess; + System.ServiceModel.Web; + System.Transactions; + System.Web; + System.Windows; + System.Xml; + System.Xml.Serialization; + System.Xml.Linq; + WindowsBase; + </NetFxReference> <NetCoreAppLibrary> + $(NetFxReference) + netstandard; Microsoft.CSharp; Microsoft.VisualBasic.Core; Microsoft.Win32.Primitives; @@ -76,6 +102,7 @@ System.Net.WebSockets.Client; System.Numerics.Vectors; System.ObjectModel; + System.Private.CoreLib; System.Private.DataContractSerialization; System.Private.Runtime.InteropServices.JavaScript; System.Private.Uri; @@ -146,6 +173,15 @@ System.Xml.XPath; System.Xml.XPath.XDocument; </NetCoreAppLibrary> + <NetCoreAppLibraryNoReference> + System.Net.Quic; + System.Private.CoreLib; + System.Private.DataContractSerialization; + System.Private.Runtime.InteropServices.JavaScript; + System.Private.Uri; + System.Private.Xml; + System.Private.Xml.Linq; + </NetCoreAppLibraryNoReference> <AspNetCoreAppLibrary> Microsoft.Extensions.Caching.Abstractions; Microsoft.Extensions.Caching.Memory; @@ -205,7 +241,9 @@ </PropertyGroup> <!-- Make available as an item. --> <ItemGroup> + <NetFxReference Include="$(NetFxReference)" /> <NetCoreAppLibrary Include="$(NetCoreAppLibrary)" /> + <NetCoreAppLibraryNoReference Include="$(NetCoreAppLibraryNoReference)" /> <AspNetCoreAppLibrary Include="$(AspNetCoreAppLibrary)" /> <WindowsDesktopCoreAppLibrary Include="$(WindowsDesktopCoreAppLibrary)" /> </ItemGroup> diff --git a/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj b/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj index 56a71b1d27b..d4160c2651a 100644 --- a/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj +++ b/src/libraries/System.Diagnostics.EventLog/src/Messages/System.Diagnostics.EventLog.Messages.csproj @@ -4,5 +4,6 @@ <Win32Resource>EventLogMessages.res</Win32Resource> <!-- Override the parent Directory.Build.props --> <SupportedOSPlatforms /> + <EnableDllImportGenerator>false</EnableDllImportGenerator> </PropertyGroup> </Project>
\ No newline at end of file diff --git a/src/libraries/System.IO.Ports/pkg/runtime.native.System.IO.Ports.proj b/src/libraries/System.IO.Ports/pkg/runtime.native.System.IO.Ports.proj index 86043b1f0aa..81eb8e04bf3 100644 --- a/src/libraries/System.IO.Ports/pkg/runtime.native.System.IO.Ports.proj +++ b/src/libraries/System.IO.Ports/pkg/runtime.native.System.IO.Ports.proj @@ -11,7 +11,7 @@ <ItemGroup> <!-- Listing the runtime specific packages to populate the dependencies section. Not building these references to avoid unintentional Build/Pack invocations. - They are filtered in the traversal build in src.proj based on the OutputRid. --> + They are filtered in the traversal build in oob-all.csproj based on the OutputRid. --> <ProjectReference Include="$(MSBuildThisFileDirectory)*.proj" Exclude="$(MSBuildProjectFile)" BuildReference="false" /> </ItemGroup> </Project> diff --git a/src/libraries/System.Net.Quic/ref/System.Net.Quic.csproj b/src/libraries/System.Net.Quic/ref/System.Net.Quic.csproj index 1d0cdaed9f8..59c5299406e 100644 --- a/src/libraries/System.Net.Quic/ref/System.Net.Quic.csproj +++ b/src/libraries/System.Net.Quic/ref/System.Net.Quic.csproj @@ -2,7 +2,6 @@ <PropertyGroup> <TargetFramework>$(NetCoreAppCurrent)</TargetFramework> <Nullable>enable</Nullable> - <IsNETCoreAppRef>false</IsNETCoreAppRef> </PropertyGroup> <ItemGroup> <Compile Include="System.Net.Quic.cs" /> diff --git a/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj b/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj index 12bcced0a5f..6d9e7e5f7cf 100644 --- a/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj +++ b/src/libraries/System.Net.Quic/src/System.Net.Quic.csproj @@ -139,7 +139,7 @@ ('$(TargetArchitecture)' == 'x64' or '$(TargetArchitecture)' == 'x86') and '$(DotNetBuildFromSource)' != 'true'"> <BinPlaceDir Include="$(MicrosoftNetCoreAppRuntimePackNativeDir)" ItemName="NativeBinPlaceItem" /> <BinPlaceDir Include="$(NetCoreAppCurrentTestHostSharedFrameworkPath)" ItemName="NativeBinPlaceItem" /> - <BinPlaceDir Include="$(NetCoreAppCurrentRuntimePath)" ItemName="NativeBinPlaceItem" /> + <BinPlaceDir Include="$(LibrariesAllBinArtifactsPath)" ItemName="NativeBinPlaceItem" /> <BinPlaceDir Include="$(LibrariesNativeArtifactsPath)" ItemName="NativeBinPlaceItem" /> <NativeBinPlaceItem Include="$(PkgSystem_Net_MsQuic_Transport)\runtimes\win10-$(TargetArchitecture)\native\*" /> </ItemGroup> diff --git a/src/libraries/System.Runtime.Experimental/src/System.Runtime.Experimental.proj b/src/libraries/System.Runtime.Experimental/src/System.Runtime.Experimental.proj deleted file mode 100644 index 304633a1911..00000000000 --- a/src/libraries/System.Runtime.Experimental/src/System.Runtime.Experimental.proj +++ /dev/null @@ -1,7 +0,0 @@ -<Project Sdk="Microsoft.Build.Traversal"> - - <ItemGroup> - <ProjectReference Include="..\ref\$(MSBuildProjectName).csproj" /> - </ItemGroup> - -</Project> diff --git a/src/libraries/System.Runtime/src/System.Runtime.csproj b/src/libraries/System.Runtime/src/System.Runtime.csproj index b8df760b6ba..b8ef29d02f5 100644 --- a/src/libraries/System.Runtime/src/System.Runtime.csproj +++ b/src/libraries/System.Runtime/src/System.Runtime.csproj @@ -20,4 +20,8 @@ <ProjectReference Include="$(CoreLibProject)" /> <ProjectReference Include="$(LibrariesProjectRoot)System.Private.Uri\src\System.Private.Uri.csproj" /> </ItemGroup> + <ItemGroup> + <!-- Set the ReferenceAssembly metadata to the inbox version of System.Runtime and not to System.Runtime.Experimental. --> + <ProjectReference Include="..\ref\System.Runtime.csproj" ReferenceOutputAssembly="false" OutputItemType="ResolvedMatchingContractOverride" /> + </ItemGroup> </Project> diff --git a/src/libraries/apicompat/ApiCompat.proj b/src/libraries/apicompat/ApiCompat.proj index e27786ccb1a..fbbd7eb46e6 100644 --- a/src/libraries/apicompat/ApiCompat.proj +++ b/src/libraries/apicompat/ApiCompat.proj @@ -1,5 +1,25 @@ <Project Sdk="Microsoft.Build.NoTargets"> + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <!-- Reference the dependencies to have the assemblies available for API comparison. --> + <NoTargetsDoNotReferenceOutputAssemblies>false</NoTargetsDoNotReferenceOutputAssemblies> + <!-- Target reference assemblies instead of implementation assemblies. --> + <CompileUsingReferenceAssemblies>true</CompileUsingReferenceAssemblies> + <TrimOutPrivateAssembliesFromReferencePath>true</TrimOutPrivateAssembliesFromReferencePath> + + <ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netcoreapp.netstandard.txt</ApiCompatNSBaselineFile> + <ApiCompatNSOnlyBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netcoreapp.netstandardOnly.txt</ApiCompatNSOnlyBaselineFile> + <PreviousNetCoreAppBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.PreviousNetCoreApp.txt</PreviousNetCoreAppBaselineFile> + </PropertyGroup> + + <!-- For API comparision, ApiCompat needs both the inbox and the out-of-band assemblies plus the shims to be built. --> + <ItemGroup> + <ProjectReference Include="..\sfx-src.proj; + ..\oob-src.proj; + ..\shims.proj" /> + </ItemGroup> + <ItemGroup> <PackageDownload Include="Microsoft.NETCore.App.Ref" Version="[$(NetCoreAppLatestStablePackageBaselineVersion)]" /> <PackageDownload Include="NETStandard.Library.Ref" Version="[$(NETStandardLibraryRefVersion)]" /> @@ -7,29 +27,16 @@ <PackageReference Include="Microsoft.DotNet.ApiCompat" Version="$(MicrosoftDotNetApiCompatVersion)" IsImplicitlyDefined="true" /> </ItemGroup> - <Target Name="GetApiCompatInputsAndOutputs"> - <PropertyGroup> - <ApiCompatNSBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netcoreapp.netstandard.txt</ApiCompatNSBaselineFile> - <ApiCompatNSOnlyBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.netcoreapp.netstandardOnly.txt</ApiCompatNSOnlyBaselineFile> - <PreviousNetCoreAppBaselineFile>$(MSBuildThisFileDirectory)ApiCompatBaseline.PreviousNetCoreApp.txt</PreviousNetCoreAppBaselineFile> - <ApiCompatMarkerFile>$(BaseIntermediateOutputPath)marker.txt</ApiCompatMarkerFile> - </PropertyGroup> - - <ItemGroup> - <NetCoreAppCurrentRefFile Include="$(NetCoreAppCurrentRefPath)*.dll" /> - </ItemGroup> - </Target> - <Target Name="RunApiCompat" - DependsOnTargets="GetApiCompatInputsAndOutputs" + DependsOnTargets="FindReferenceAssembliesForReferences" AfterTargets="Build" - Inputs="@(NetCoreAppCurrentRefFile);$(ApiCompatNSBaselineFile);$(ApiCompatNSOnlyBaselineFile);$(PreviousNetCoreAppBaselineFile)" - Outputs="$(ApiCompatMarkerFile)"> - + Inputs="@(ReferencePathWithRefAssemblies);$(ApiCompatNSBaselineFile);$(ApiCompatNSOnlyBaselineFile);$(PreviousNetCoreAppBaselineFile)" + Outputs="$(IntermediateOutputPath)$(TargetArchitecture)-marker.txt"> <PropertyGroup> - <ApiCompatResponseFile>$(BaseIntermediateOutputPath)apicompat.rsp</ApiCompatResponseFile> + <ApiCompatResponseFile>$(IntermediateOutputPath)apicompat.rsp</ApiCompatResponseFile> <ApiCompatExitCode>0</ApiCompatExitCode> - <ApiCompatArgs>--impl-dirs "$(NetCoreAppCurrentRefPath.TrimEnd('\/'))"</ApiCompatArgs> + <!-- TODO: Replace with ReferencePathWithRefAssemblies when ApiCompat supports passing in a list of assemblies: https://github.com/dotnet/arcade/issues/8394. --> + <ApiCompatArgs>--impl-dirs "$(LibrariesAllRefArtifactsPath.TrimEnd('\/'))"</ApiCompatArgs> <ApiCompatArgs Condition="'$(ApiCompatExcludeAttributeList)' != ''">$(ApiCompatArgs) --exclude-attributes "$(ApiCompatExcludeAttributeList)"</ApiCompatArgs> </PropertyGroup> @@ -45,6 +52,8 @@ <NetStandard21BaselineModifer Condition="'$(UpdateNETStandardBaseline)' == 'true'">></NetStandard21BaselineModifer> </PropertyGroup> + <Message Importance="high" Text="ApiCompat -> Comparing $(NetCoreAppCurrent) reference assemblies against .NETStandard2.x and .NETCoreApp$(NetCoreAppLatestStableVersion)..." /> + <Exec Command="$(_ApiCompatCommand) "$(NetStandard21OnlyRef)" @"$(ApiCompatResponseFile)" $(NetStandard21BaselineModifer) "$(ApiCompatNSOnlyBaselineFile)"" CustomErrorRegularExpression="^[a-zA-Z]+ :" StandardOutputImportance="Low" @@ -77,9 +86,12 @@ <Error Condition="'$(ApiCompatExitCode)' != '0'" Text="ApiCompat failed comparing $(NetCoreAppLatestStable) to $(NetCoreAppCurrent). If this breaking change is intentional, the ApiCompat baseline can be updated by running 'dotnet build $(MSBuildThisFileFullPath) /p:UpdatePreviousNetCoreAppBaseline=true'" /> <!-- Create a marker file which serves as the target's output to enable incremental builds. --> - <Touch Files="$(ApiCompatMarkerFile)" + <Touch Files="$(IntermediateOutputPath)$(TargetArchitecture)-marker.txt" AlwaysCreate="true" /> - + </Target> + + <Target Name="CleanAdditionalFiles" AfterTargets="Clean"> + <RemoveDir Directories="$(IntermediateOutputPath)" /> </Target> </Project> diff --git a/src/libraries/frameworklist.targets b/src/libraries/frameworklist.targets new file mode 100644 index 00000000000..6e1966fe424 --- /dev/null +++ b/src/libraries/frameworklist.targets @@ -0,0 +1,41 @@ +<Project Sdk="Microsoft.DotNet.SharedFramework.Sdk"> + + <PropertyGroup> + <IsPackable>false</IsPackable> + <FrameworkListOutputPath>$(MicrosoftNetCoreAppRefPackDataDir)FrameworkList.xml</FrameworkListOutputPath> + </PropertyGroup> + + <Target Name="GetGenerateFrameworkListFileInputs"> + <ItemGroup> + <SharedFrameworkAssemblyWithReferenceAssembly Include="@(SharedFrameworkAssembly->HasMetadata('ReferenceAssembly'))" /> + <SharedFrameworkAssemblyWithoutReferenceAssembly Include="@(SharedFrameworkAssembly)" + Exclude="@(SharedFrameworkAssemblyWithReferenceAssembly)" /> + + <FrameworkListInputFile Include="@(SharedFrameworkAssemblyWithReferenceAssembly->Metadata('ReferenceAssembly')); + @(SharedFrameworkAssemblyWithoutReferenceAssembly)" + TargetPath="ref/$(NetCoreAppCurrent)" + Condition="!$(NetCoreAppLibraryNoReference.Contains('%(Filename);'))" /> + </ItemGroup> + </Target> + + <UsingTask TaskName="CreateFrameworkListFile" AssemblyFile="$(DotNetSharedFrameworkTaskFile)"/> + <Target Name="GenerateFrameworkListFile" + DependsOnTargets="GetGenerateFrameworkListFileInputs" + AfterTargets="Build" + Condition="'@(SharedFrameworkAssembly)' != ''" + Inputs="@(FrameworkListInputFile)" + Outputs="$(FrameworkListOutputPath)"> + <ItemGroup> + <FrameworkListRootAttribute Include="Name" Value="$(NetCoreAppCurrentBrandName)" /> + <FrameworkListRootAttribute Include="TargetFrameworkIdentifier" Value="$(NetCoreAppCurrentIdentifier)" /> + <FrameworkListRootAttribute Include="TargetFrameworkVersion" Value="$(NetCoreAppCurrentVersion)" /> + <FrameworkListRootAttribute Include="FrameworkName" Value="$(MicrosoftNetCoreAppFrameworkName)" /> + </ItemGroup> + + <CreateFrameworkListFile Files="@(FrameworkListInputFile)" + TargetFile="$(FrameworkListOutputPath)" + TargetFilePrefixes="ref/;runtimes/" + RootAttributes="@(FrameworkListRootAttribute)" /> + </Target> + +</Project> diff --git a/src/libraries/illink-oob.targets b/src/libraries/illink-oob.targets deleted file mode 100644 index d609c1d47bd..00000000000 --- a/src/libraries/illink-oob.targets +++ /dev/null @@ -1,84 +0,0 @@ -<Project> - - <Target Name="GetOOBAssembliesToTrim" - DependsOnTargets="PrepareForAssembliesTrim"> - - <PropertyGroup> - <OOBAssembliesTrimmedArtifactsPath>$([MSBuild]::NormalizeDirectory('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-oobs'))</OOBAssembliesTrimmedArtifactsPath> - <OOBAssembliesMarkerFile>$(IntermediateOutputPath)oob-linker-$(TargetOS)-$(TargetArchitecture)-marker.txt</OOBAssembliesMarkerFile> - </PropertyGroup> - - <ItemGroup> - <!-- Include suppression XML files bin-placed in earlier per-library linker run. --> - <OOBLibrarySuppressionsXml Include="$(ILLinkTrimAssemblyOOBSuppressionsXmlsDir)*.xml" /> - - <!-- The following is the list of all the OOBs we will ignore for now --> - <OOBAssemblyToIgnore Include="System.CodeDom" /> - <OOBAssemblyToIgnore Include="System.ComponentModel.Composition" /> - <OOBAssemblyToIgnore Include="System.ComponentModel.Composition.Registration" /> - <OOBAssemblyToIgnore Include="System.Composition.AttributedModel" /> - <OOBAssemblyToIgnore Include="System.Composition.Convention" /> - <OOBAssemblyToIgnore Include="System.Composition.Hosting" /> - <OOBAssemblyToIgnore Include="System.Composition.Runtime" /> - <OOBAssemblyToIgnore Include="System.Composition.TypedParts" /> - <OOBAssemblyToIgnore Include="System.Configuration.ConfigurationManager" /> - <OOBAssemblyToIgnore Include="System.Speech" /> - - <NetCoreAppCurrentAssembly Include="$(NetCoreAppCurrentRuntimePath)*.dll" - Exclude="$(NetCoreAppCurrentRuntimePath)*.Generator*.dll; - $(NetCoreAppCurrentRuntimePath)*.Native.dll; - $(NetCoreAppCurrentRuntimePath)*msquic.dll" /> - <SharedFrameworkAssembly Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> - - <!-- Move items to FileName so that we can subtract them --> - <NetCoreAppCurrentAssemblyWithFilename Include="@(NetCoreAppCurrentAssembly -> '%(FileName)')" - OriginalIdentity="%(Identity)" /> - <SharedFrameworkAssemblyWithFilename Include="@(SharedFrameworkAssembly -> '%(FileName)')" - OriginalIdentity="%(Identity)" /> - - <OOBAssemblyToTrimWithFileName Include="@(NetCoreAppCurrentAssemblyWithFilename)" - Exclude="@(SharedFrameworkAssemblyWithFilename); - @(OOBAssemblyToIgnore)" /> - <OOBAssemblyToTrim Include="@(OOBAssemblyToTrimWithFileName -> '%(OriginalIdentity)')" /> - - <OOBAssemblyReferenceWithFilename Include="@(NetCoreAppCurrentAssemblyWithFilename)" - Exclude="@(OOBAssemblyToTrimWithFileName)" /> - <OOBAssemblyReference Include="@(OOBAssemblyReferenceWithFilename -> '%(OriginalIdentity)')" /> - <OOBAssemblyReference Include="$(SystemPrivateCoreLibPath)" /> - </ItemGroup> - - <ItemGroup> - <OOBLibraryTrimmed Include="$(OOBAssembliesTrimmedArtifactsPath)*.*" /> - </ItemGroup> - - </Target> - - <Target Name="ILLinkTrimOOBAssemblies" - AfterTargets="Build" - DependsOnTargets="GetOOBAssembliesToTrim;PrepareForAssembliesTrim" - Inputs="$(ILLinkTasksAssembly);@(OOBAssemblyToTrim);@(OOBAssemblyReference);@(OOBLibrarySuppressionsXml)" - Outputs="$(OOBAssembliesMarkerFile)"> - - <Message Text="Trimming $(PackageRID) out-of-band assemblies with ILLinker..." Importance="high" /> - - <PropertyGroup> - <OOBILLinkArgs>$(ILLinkArgs)</OOBILLinkArgs> - <OOBILLinkArgs Condition="'@(OOBLibrarySuppressionsXml)' != ''" >$(OOBILLinkArgs) --link-attributes "@(OOBLibrarySuppressionsXml->'%(FullPath)', '" --link-attributes "')"</OOBILLinkArgs> - </PropertyGroup> - - <ILLink AssemblyPaths="" - RootAssemblyNames="@(OOBAssemblyToTrim)" - ReferenceAssemblyPaths="@(OOBAssemblyReference)" - OutputDirectory="$(OOBAssembliesTrimmedArtifactsPath)" - ExtraArgs="$(OOBILLinkArgs)" - ToolExe="$(_DotNetHostFileName)" - ToolPath="$(_DotNetHostDirectory)" /> - - <!-- Create a marker file which serves as the target's output to enable incremental builds. --> - <MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(OOBAssembliesMarkerFile)'))" /> - <Touch Files="$(OOBAssembliesMarkerFile)" - AlwaysCreate="true" /> - - </Target> - -</Project> diff --git a/src/libraries/illink-sharedframework.targets b/src/libraries/illink-sharedframework.targets deleted file mode 100644 index 8641657b9f5..00000000000 --- a/src/libraries/illink-sharedframework.targets +++ /dev/null @@ -1,66 +0,0 @@ -<Project> - - <Target Name="GetSharedFrameworkAssembliesToTrim" - DependsOnTargets="PrepareForAssembliesTrim"> - - <PropertyGroup> - <SharedFrameworkAssembliesTrimmedArtifactsPath>$([MSBuild]::NormalizeDirectory('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-runtimepack'))</SharedFrameworkAssembliesTrimmedArtifactsPath> - <SharedFrameworkAssembliesMarkerFile>$(IntermediateOutputPath)sfx-linker-$(TargetOS)-$(TargetArchitecture)-marker.txt</SharedFrameworkAssembliesMarkerFile> - </PropertyGroup> - - <ItemGroup> - <!-- Include suppression XML files bin-placed in earlier per-library linker run. --> - <SharedFrameworkSuppressionsXml Include="$(ILLinkTrimAssemblyRuntimePackSuppressionsXmlsDir)*.xml" /> - <!-- Collect CoreLib suppression XML files not bin-placed in earlier per-library linker run. CoreLib doesn't use bin-place logic. --> - <SharedFrameworkSuppressionsXml Include="$(CoreLibSharedDir)ILLink\ILLink.Suppressions.LibraryBuild.xml" /> - <SharedFrameworkSuppressionsXml Condition="'$(RuntimeFlavor)' == 'CoreCLR'" Include="$(CoreClrProjectRoot)System.Private.CoreLib\$(ProjectILLinkSuppressionsFile).LibraryBuild.xml" /> - - <SharedFrameworkAssemblyToTrim Include="$(MicrosoftNetCoreAppRuntimePackRidLibTfmDir)*.dll" /> - <SharedFrameworkAssemblyToTrim Include="$(SystemPrivateCoreLibPath)" /> - </ItemGroup> - - <ItemGroup> - <SharedFrameworkAssemblyTrimmed Include="$(SharedFrameworkAssembliesTrimmedArtifactsPath)*.*" /> - </ItemGroup> - - </Target> - - <Target Name="ILLinkTrimSharedFramework" - AfterTargets="Build" - DependsOnTargets="GetSharedFrameworkAssembliesToTrim;PrepareForAssembliesTrim" - Inputs="$(ILLinkTasksAssembly);@(SharedFrameworkAssemblyToTrim);@(SharedFrameworkSuppressionsXml)" - Outputs="$(SharedFrameworkAssembliesMarkerFile)"> - - <Message Text="Trimming $(PackageRID) shared framework assemblies with ILLinker..." Importance="high" /> - - <PropertyGroup> - <SharedFrameworkILLinkArgs>$(ILLinkArgs)</SharedFrameworkILLinkArgs> - <!-- update debug symbols --> - <SharedFrameworkILLinkArgs>$(SharedFrameworkILLinkArgs) -b true</SharedFrameworkILLinkArgs> - </PropertyGroup> - - <ItemGroup> - <RootAssemblies Include="@(SharedFrameworkAssemblyToTrim)"> - <RootMode>library</RootMode> - </RootAssemblies> - </ItemGroup> - - <PropertyGroup> - <SharedFrameworkILLinkArgs Condition="'@(SharedFrameworkSuppressionsXml)' != ''" >$(SharedFrameworkILLinkArgs) --link-attributes "@(SharedFrameworkSuppressionsXml->'%(FullPath)', '" --link-attributes "')"</SharedFrameworkILLinkArgs> - </PropertyGroup> - - <ILLink AssemblyPaths="" - RootAssemblyNames="@(RootAssemblies)" - OutputDirectory="$(SharedFrameworkAssembliesTrimmedArtifactsPath)" - ExtraArgs="$(SharedFrameworkILLinkArgs)" - ToolExe="$(_DotNetHostFileName)" - ToolPath="$(_DotNetHostDirectory)" /> - - <!-- Create a marker file which serves as the target's output to enable incremental builds. --> - <MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(SharedFrameworkAssembliesMarkerFile)'))" /> - <Touch Files="$(SharedFrameworkAssembliesMarkerFile)" - AlwaysCreate="true" /> - - </Target> - -</Project> diff --git a/src/libraries/illink-trimassemblies.targets b/src/libraries/illink-trimassemblies.targets deleted file mode 100644 index 8de8f3264f6..00000000000 --- a/src/libraries/illink-trimassemblies.targets +++ /dev/null @@ -1,41 +0,0 @@ -<Project> - - <Target Name="PrepareForAssembliesTrim" - DependsOnTargets="SetCommonILLinkArgs"> - - <!-- Retrieve CoreLib's path as it isn't binplaced alongside the libraries - https://github.com/dotnet/runtime/issues/43095. --> - <ItemGroup> - <CoreLibProjectWithRuntimeConfig Include="$(CoreLibProject)"> - <!-- Don't flow TargetFramework and Platform to use same inputs and outputs as the CoreLib's build as part of the runtime. --> - <UndefineProperties>$(UndefineProperties);TargetFramework;Platform</UndefineProperties> - <!-- If conflicting, manually set the Configuration property of the CoreLib project so that it aligns with the specified runtime configuration in the libraries' build. --> - <Properties Condition="'$(RuntimeFlavor)' == 'CoreCLR' and - '$(Configuration)' != '$(CoreCLRConfiguration)'">Configuration=$(CoreCLRConfiguration)</Properties> - <Properties Condition="'$(RuntimeFlavor)' == 'Mono' and - '$(Configuration)' != '$(MonoConfiguration)'">Configuration=$(MonoConfiguration)</Properties> - </CoreLibProjectWithRuntimeConfig> - </ItemGroup> - - <MSBuild Projects="@(CoreLibProjectWithRuntimeConfig)" - Targets="GetTargetPath"> - <Output TaskParameter="TargetOutputs" PropertyName="SystemPrivateCoreLibPath" /> - </MSBuild> - - <PropertyGroup> - <ProjectILLinkSuppressionsFile>src\ILLink\ILLink.Suppressions</ProjectILLinkSuppressionsFile> - </PropertyGroup> - - <!-- When running from Desktop MSBuild, DOTNET_HOST_PATH is not set. - In this case, explicitly specify the path to the dotnet host. --> - <PropertyGroup Condition=" '$(DOTNET_HOST_PATH)' == '' "> - <!-- This is defined when building in Visual Studio. --> - <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory> - <_DotNetHostFileName>$([System.IO.Path]::GetFileName('$(DotNetTool)'))</_DotNetHostFileName> - </PropertyGroup> - - </Target> - - <Import Project="$(RepositoryEngineeringDir)illink.targets" /> - <Import Project="$(MSBuildThisFileDirectory)illink-sharedframework.targets" /> - <Import Project="$(MSBuildThisFileDirectory)illink-oob.targets" /> -</Project>
\ No newline at end of file diff --git a/src/libraries/oob-all.proj b/src/libraries/oob-all.proj new file mode 100644 index 00000000000..a444e6eb449 --- /dev/null +++ b/src/libraries/oob-all.proj @@ -0,0 +1,37 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup Condition="'$(BuildTargetFramework)' == 'net48'"> + <TargetFramework>$(BuildTargetFramework)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + + <!-- Reference all out-of-band projects. --> + <ItemGroup> + <ProjectReference Include="$(MSBuildThisFileDirectory)*\src\*.*proj" + Exclude="@(ProjectExclusions); + $(MSBuildThisFileDirectory)*\src\**\*.shproj; + shims\src\*.csproj" /> + + <!-- Build these packages in the allconfigurations leg only. --> + <ProjectReference Remove="Microsoft.Internal.Runtime.AspNetCore.Transport\src\Microsoft.Internal.Runtime.AspNetCore.Transport.proj; + Microsoft.Internal.Runtime.WindowsDesktop.Transport\src\Microsoft.Internal.Runtime.WindowsDesktop.Transport.proj; + Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj; + Microsoft.NETCore.Platforms\src\Microsoft.NETCore.Platforms.csproj" + Condition="'$(BuildAllConfigurations)' != 'true'" /> + + <!-- Skip these projects during source-build as they rely on external prebuilts. --> + <ProjectReference Remove="Microsoft.Extensions.DependencyInjection.Specification.Tests\src\Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj; + Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj" + Condition="'$(DotNetBuildFromSource)' == 'true'" /> + + <!-- During an official build, build the identity package only in the allconfigurations build, otherwise always. --> + <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\runtime.native.*.proj" + Condition="'$(BuildingAnOfficialBuildLeg)' != 'true' or '$(BuildAllConfigurations)' == 'true'" /> + <!-- During an official Build, build the rid specific package matching the OutputRid only outside of an allconfigurations build and only when targeting the CoreCLR runtime. + The limitation on the CoreCLR runtime is entirely artificial but avoids duplicate assets being publish. --> + <ProjectReference Include="$(MSBuildThisFileDirectory)*\pkg\runtime.$(OutputRid).*.proj" + Condition="'$(BuildingAnOfficialBuildLeg)' != 'true' or ('$(BuildAllConfigurations)' != 'true' and '$(RuntimeFlavor)' == '$(PrimaryRuntimeFlavor)')" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/oob-ref.proj b/src/libraries/oob-ref.proj new file mode 100644 index 00000000000..33f580285a5 --- /dev/null +++ b/src/libraries/oob-ref.proj @@ -0,0 +1,17 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + + <!-- Reference all NetCoreAppCurrent out-of-band ref projects. --> + <ItemGroup> + <ProjectReference Include="$(MSBuildThisFileDirectory)*\ref\*.csproj" + Exclude="@(ProjectExclusions); + shims\ref\*.csproj; + @(NetCoreAppLibrary->'%(Identity)\ref\%(Identity).csproj')" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/oob-src.proj b/src/libraries/oob-src.proj new file mode 100644 index 00000000000..1edbe734b93 --- /dev/null +++ b/src/libraries/oob-src.proj @@ -0,0 +1,32 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + + <!-- Reference all NetCoreAppCurrent out-of-band src projects. --> + <ItemGroup> + <ProjectReference Include="$(MSBuildThisFileDirectory)*\src\*.*proj" + Exclude="@(ProjectExclusions); + $(MSBuildThisFileDirectory)*\src\*.shproj; + shims\src\*.csproj; + @(NetCoreAppLibrary->'%(Identity)\src\%(Identity).csproj'); + Microsoft.VisualBasic.Core\src\Microsoft.VisualBasic.Core.vbproj" /> + + <!-- Don't build task and tools project in the NetCoreAppCurrent vertical. --> + <ProjectReference Remove="Microsoft.NETCore.Platforms\src\Microsoft.NETCore.Platforms.csproj; + Microsoft.XmlSerializer.Generator\src\Microsoft.XmlSerializer.Generator.csproj" /> + + <!-- Don't build meta-projects in the NetCoreAppCurrent vertical. --> + <ProjectReference Remove="Microsoft.Internal.Runtime.AspNetCore.Transport\src\Microsoft.Internal.Runtime.AspNetCore.Transport.proj; + Microsoft.Internal.Runtime.WindowsDesktop.Transport\src\Microsoft.Internal.Runtime.WindowsDesktop.Transport.proj; + Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj" /> + + <!-- Filter out projects which aren't source-buildable. --> + <ProjectReference Remove="Microsoft.Extensions.DependencyInjection.Specification.Tests\src\Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj" + Condition="'$(DotNetBuildFromSource)' == 'true'" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/oob.proj b/src/libraries/oob.proj new file mode 100644 index 00000000000..74a8bfb3b18 --- /dev/null +++ b/src/libraries/oob.proj @@ -0,0 +1,108 @@ +<Project Sdk="Microsoft.Build.NoTargets"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <!-- By default, build the NetCoreAppCurrent vertical only. --> + <BuildTargetFramework Condition="'$(BuildAllConfigurations)' != 'true'">$(NetCoreAppCurrent)</BuildTargetFramework> + </PropertyGroup> + + <ItemGroup Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''"> + <ProjectReference Include="sfx-src.proj" OutputItemType="SharedFrameworkAssembly" /> + <ProjectReference Include="oob-src.proj" OutputItemType="OOBAssembly" /> + <ProjectReference Include="shims.proj" OutputItemType="SharedFrameworkAssembly" /> + + <ProjectReference Include="apicompat\ApiCompat.proj" + Condition="'$(DotNetBuildFromSource)' != 'true' and '$(RunApiCompat)' != 'false'" /> + </ItemGroup> + + <ItemGroup Condition="'$(BuildTargetFramework)' != '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''"> + <ProjectReference Include="oob-all.proj" SkipGetTargetFrameworkProperties="true" /> + </ItemGroup> + + <!-- Support building reference projects only. --> + <ItemGroup Condition="'$(RefOnly)' == 'true'"> + <ProjectReference Remove="@(ProjectReference)" /> + <ProjectReference Include="sfx-ref.proj" OutputItemType="SharedFrameworkAssembly" /> + <ProjectReference Include="oob-ref.proj" /> + <ProjectReference Include="shims.proj" OutputItemType="SharedFrameworkAssembly" /> + </ItemGroup> + + <ImportGroup Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''"> + <!-- Re-generate the targeting pack's framework list to include shims. --> + <Import Project="frameworklist.targets" /> + <!-- Import the illink file which contains some of the logic required to illink the out-of-band assemblies. --> + <Import Project="$(RepositoryEngineeringDir)illink.targets" /> + </ImportGroup> + + <Target Name="GetTrimOOBAssembliesInputs" + DependsOnTargets="ResolveProjectReferences"> + <PropertyGroup> + <OOBAssembliesTrimmedArtifactsPath>$([MSBuild]::NormalizeDirectory('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-oobs'))</OOBAssembliesTrimmedArtifactsPath> + <OOBAssembliesMarkerFile>$(IntermediateOutputPath)linker-$(TargetArchitecture)-marker.txt</OOBAssembliesMarkerFile> + </PropertyGroup> + + <ItemGroup> + <!-- Include suppression XML files bin-placed in earlier per-library linker run. --> + <OOBLibrarySuppressionsXml Include="$(ILLinkTrimAssemblyOOBSuppressionsXmlsDir)*.xml" /> + + <!-- The following is the list of all the OOBs we will ignore for now --> + <OOBAssemblyToIgnore Include="System.CodeDom; + System.ComponentModel.Composition; + System.ComponentModel.Composition.Registration; + System.Composition.AttributedModel; + System.Composition.Convention; + System.Composition.Hosting; + System.Composition.Runtime; + System.Composition.TypedParts; + System.Configuration.ConfigurationManager; + System.Speech; + Microsoft.Extensions.DependencyInjection.Specification.Tests" /> + + <!-- Move items to FileName so that we can subtract them. --> + <OOBAssemblyWithFilename Include="@(OOBAssembly->Metadata('Filename'))" + OriginalIdentity="%(Identity)" /> + <OOBAssemblyToTrimWithFilename Include="@(OOBAssemblyWithFilename)" + Exclude="@(OOBAssemblyToIgnore)" /> + <OOBAssemblyToIgnoreWithFilename Include="@(OOBAssemblyWithFilename)" + Exclude="@(OOBAssemblyToTrimWithFilename)" /> + + <OOBAssemblyToTrim Include="@(OOBAssemblyToTrimWithFilename->Metadata('OriginalIdentity'))" /> + <OOBAssemblyReference Include="@(OOBAssemblyToIgnoreWithFilename->Metadata('OriginalIdentity')); + @(SharedFrameworkAssembly)" /> + </ItemGroup> + </Target> + + <Target Name="TrimOOBAssemblies" + AfterTargets="Build" + Condition="'$(RefOnly)' != 'true' and '@(OOBAssembly)' != ''" + DependsOnTargets="GetTrimOOBAssembliesInputs;PrepareForAssembliesTrim" + Inputs="$(ILLinkTasksAssembly);@(OOBAssemblyToTrim);@(OOBAssemblyReference);@(OOBLibrarySuppressionsXml)" + Outputs="$(OOBAssembliesMarkerFile)"> + <Message Text="$(MSBuildProjectName) -> Trimming $(PackageRID) out-of-band assemblies with ILLinker..." Importance="high" /> + + <PropertyGroup> + <OOBILLinkArgs>$(ILLinkArgs)</OOBILLinkArgs> + <OOBILLinkArgs Condition="'@(OOBLibrarySuppressionsXml)' != ''" >$(OOBILLinkArgs) --link-attributes "@(OOBLibrarySuppressionsXml->'%(FullPath)', '" --link-attributes "')"</OOBILLinkArgs> + </PropertyGroup> + + <ILLink AssemblyPaths="" + RootAssemblyNames="@(OOBAssemblyToTrim)" + ReferenceAssemblyPaths="@(OOBAssemblyReference)" + OutputDirectory="$(OOBAssembliesTrimmedArtifactsPath)" + ExtraArgs="$(OOBILLinkArgs)" + ToolExe="$(_DotNetHostFileName)" + ToolPath="$(_DotNetHostDirectory)" /> + + <!-- Create a marker file which serves as the target's output to enable incremental builds. --> + <MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(OOBAssembliesMarkerFile)'))" /> + <Touch Files="$(OOBAssembliesMarkerFile)" + AlwaysCreate="true" /> + </Target> + + <Target Name="SetAzureDevOpsVariableForBuiltPackages" + Condition="'$(ContinuousIntegrationBuild)' == 'true'" + AfterTargets="Build;Pack"> + <Message Condition="Exists('$(ArtifactsDir)packages')" Importance="High" Text="##vso[task.setvariable variable=_librariesBuildProducedPackages]true" /> + </Target> + +</Project> diff --git a/src/libraries/ref.proj b/src/libraries/ref.proj deleted file mode 100644 index 4d67c2f01c6..00000000000 --- a/src/libraries/ref.proj +++ /dev/null @@ -1,99 +0,0 @@ -<Project Sdk="Microsoft.Build.Traversal"> - <Import Project="Sdk.props" Sdk="Microsoft.DotNet.SharedFramework.Sdk" /> - - <PropertyGroup> - <TraversalGlobalProperties>BuildAllProjects=true</TraversalGlobalProperties> - <IsPackable>false</IsPackable> - </PropertyGroup> - - <PropertyGroup Condition="'$(BuildTargetFramework)' == 'net48'"> - <TargetFramework>$(BuildTargetFramework)</TargetFramework> - <!-- Filter out ProjectReferences which aren't compatible with the above TargetFramework. --> - <OmitIncompatibleProjectReferences>true</OmitIncompatibleProjectReferences> - <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> - </PropertyGroup> - - <ItemGroup> - <_allRef Include="$(MSBuildThisFileDirectory)*\ref\*.csproj" - Exclude="@(ProjectExclusions)" /> - <NonNetCoreAppProject Include="@(_allRef)" - Exclude="@(NetCoreAppLibrary->'%(Identity)\ref\%(Identity).csproj')" /> - <NetCoreAppProject Include="@(_allRef)" - Exclude="@(NonNetCoreAppProject)" /> - <GeneratedShimProject Include="shims\generated\*.csproj" - Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''" /> - </ItemGroup> - - <ItemGroup> - <ProjectReference Include="@(NetCoreAppProject)" /> - - <!-- Restore only and build later. --> - <ProjectReference Include="@(NonNetCoreAppProject); - @(GeneratedShimProject)" - Condition="'$(MSBuildRestoreSessionId)' != ''" /> - </ItemGroup> - - <Target Name="BuildGeneratedShims" - AfterTargets="Build" - Condition="'@(GeneratedShimProject)' != ''"> - <MSBuild Targets="Build" - Projects="@(GeneratedShimProject)" - Properties="$(TraversalGlobalProperties)" /> - </Target> - - <Target Name="GetRefPackFiles"> - <ItemGroup> - <RefPackLibFile Include="$(MicrosoftNetCoreAppRefPackRefDir)*.*"> - <TargetPath>ref/$(NetCoreAppCurrent)</TargetPath> - <IsSymbolFile Condition="$([System.String]::Copy('%(Identity)').EndsWith('pdb'))">true</IsSymbolFile> - </RefPackLibFile> - </ItemGroup> - <!-- We need to set this metadata in a separate ItemGroup than when the Items are initially populated in order to - have access to the Extension metadata. --> - <ItemGroup> - <RefPackLibFile> - <IsSymbolFile Condition="'%(Extension)' == '.pdb'">true</IsSymbolFile> - </RefPackLibFile> - </ItemGroup> - </Target> - - <!-- Generate the ref pack's FrameworkList.xml --> - <UsingTask TaskName="CreateFrameworkListFile" AssemblyFile="$(DotNetSharedFrameworkTaskFile)"/> - <Target Name="GenerateFrameworkListFile" - DependsOnTargets="GetRefPackFiles" - AfterTargets="BuildGeneratedShims" - Inputs="@(RefPackLibFile)" - Outputs="$(MicrosoftNetCoreAppRefPackDataDir)FrameworkList.xml" - Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''"> - <ItemGroup> - <FrameworkListRootAttribute Include="Name" Value="$(NetCoreAppCurrentBrandName)" /> - <FrameworkListRootAttribute Include="TargetFrameworkIdentifier" Value="$(NetCoreAppCurrentIdentifier)" /> - <FrameworkListRootAttribute Include="TargetFrameworkVersion" Value="$(NetCoreAppCurrentVersion)" /> - <FrameworkListRootAttribute Include="FrameworkName" Value="$(MicrosoftNetCoreAppFrameworkName)" /> - </ItemGroup> - - <CreateFrameworkListFile Files="@(RefPackLibFile)" - TargetFile="$(MicrosoftNetCoreAppRefPackDataDir)FrameworkList.xml" - TargetFilePrefixes="ref/;runtimes/" - RootAttributes="@(FrameworkListRootAttribute)" /> - </Target> - - <Target Name="BuildNonNetCoreAppProjects" - AfterTargets="GenerateFrameworkListFile"> - <MSBuild Targets="Build" - BuildInParallel="true" - Projects="@(NonNetCoreAppProject)" - Properties="$(TraversalGlobalProperties)" /> - </Target> - - <!-- Build generated shims with the full reference closure, including OOB assemblies. --> - <Target Name="RebuildGeneratedShims" - AfterTargets="BuildNonNetCoreAppProjects" - Condition="'@(GeneratedShimProject)' != ''"> - <MSBuild Targets="Build" - Projects="@(GeneratedShimProject)" - Properties="$(TraversalGlobalProperties);_Incremental=true" /> - </Target> - - <Import Project="Sdk.targets" Sdk="Microsoft.DotNet.SharedFramework.Sdk" /> -</Project> diff --git a/src/libraries/sfx-ref.proj b/src/libraries/sfx-ref.proj new file mode 100644 index 00000000000..ae5b1deaf96 --- /dev/null +++ b/src/libraries/sfx-ref.proj @@ -0,0 +1,19 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + + <!-- Reference all NetCoreAppCurrent shared framework ref projects. --> + <ItemGroup> + <AnyProject Include="$(MSBuildThisFileDirectory)*\ref\*.csproj" + Exclude="@(ProjectExclusions)" /> + <NonNetCoreAppProject Include="@(AnyProject)" + Exclude="@(NetCoreAppLibrary->'%(Identity)\ref\%(Identity).csproj')" /> + <ProjectReference Include="@(AnyProject)" + Exclude="@(NonNetCoreAppProject)" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/sfx-src.proj b/src/libraries/sfx-src.proj new file mode 100644 index 00000000000..8e7679dac15 --- /dev/null +++ b/src/libraries/sfx-src.proj @@ -0,0 +1,22 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + + <!-- Reference all NetCoreAppCurrent shared framework src projects. --> + <ItemGroup> + <AnyProject Include="$(MSBuildThisFileDirectory)*\src\*.*proj" + Exclude="@(ProjectExclusions); + $(MSBuildThisFileDirectory)*\src\*.shproj" /> + <NonNetCoreAppProject Include="@(AnyProject)" + Exclude="@(NetCoreAppLibrary->'%(Identity)\src\%(Identity).csproj'); + Microsoft.VisualBasic.Core\src\Microsoft.VisualBasic.Core.vbproj" /> + <ProjectReference Include="@(AnyProject); + $(CoreLibProject)" + Exclude="@(NonNetCoreAppProject)" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/sfx.proj b/src/libraries/sfx.proj new file mode 100644 index 00000000000..ff1e898d72d --- /dev/null +++ b/src/libraries/sfx.proj @@ -0,0 +1,71 @@ +<Project Sdk="Microsoft.Build.NoTargets"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <BuildInParallel>false</BuildInParallel> + </PropertyGroup> + + <ItemGroup> + <!-- The sfx ref projects must be built first as sfx src projects don't use P2Ps to reference each other. Instead the + references are defined manually via Reference items, therefore the reference assemblies must exist before that. --> + <ProjectReference Include="sfx-ref.proj"> + <OutputItemType Condition="'$(RefOnly)' == 'true'">SharedFrameworkAssembly</OutputItemType> + </ProjectReference> + <!-- Support building only the reference assemblies. --> + <ProjectReference Include="sfx-src.proj" + OutputItemType="SharedFrameworkAssembly" + Condition="'$(RefOnly)' != 'true'" /> + </ItemGroup> + + <!-- Generate the targeting pack's framework list so that out-of-band projects can leverage it. --> + <Import Project="frameworklist.targets" /> + <!-- Import the illink file which contains some of the logic required to illink the shared framework assemblies. --> + <Import Project="$(RepositoryEngineeringDir)illink.targets" /> + + <Target Name="GetTrimSharedFrameworkAssembliesInputs"> + <PropertyGroup> + <SharedFrameworkAssembliesMarkerFile>$(IntermediateOutputPath)linker-$(TargetArchitecture)-marker.txt</SharedFrameworkAssembliesMarkerFile> + </PropertyGroup> + + <ItemGroup> + <!-- Include suppression XML files bin-placed in earlier per-library linker run. --> + <SharedFrameworkSuppressionsXml Include="$(ILLinkTrimAssemblyRuntimePackSuppressionsXmlsDir)*.xml" /> + <!-- Collect CoreLib suppression XML files not bin-placed in earlier per-library linker run. CoreLib doesn't use bin-place logic. --> + <SharedFrameworkSuppressionsXml Include="$(CoreLibSharedDir)ILLink\ILLink.Suppressions.LibraryBuild.xml" /> + <SharedFrameworkSuppressionsXml Condition="'$(RuntimeFlavor)' == 'CoreCLR'" Include="$(CoreClrProjectRoot)System.Private.CoreLib\src\ILLink\ILLink.Suppressions.LibraryBuild.xml" /> + </ItemGroup> + </Target> + + <Target Name="TrimSharedFrameworkAssemblies" + AfterTargets="Build" + DependsOnTargets="ResolveProjectReferences;GetTrimSharedFrameworkAssembliesInputs;PrepareForAssembliesTrim" + Condition="'$(RefOnly)' != 'true'" + Inputs="@(SharedFrameworkAssembly);@(SharedFrameworkSuppressionsXml);$(ILLinkTasksAssembly)" + Outputs="$(SharedFrameworkAssembliesMarkerFile)"> + <Message Text="$(MSBuildProjectName) -> Trimming $(PackageRID) shared framework assemblies with ILLinker..." Importance="high" /> + + <PropertyGroup> + <SharedFrameworkILLinkArgs>$(ILLinkArgs)</SharedFrameworkILLinkArgs> + <!-- update debug symbols --> + <SharedFrameworkILLinkArgs>$(SharedFrameworkILLinkArgs) -b true</SharedFrameworkILLinkArgs> + <SharedFrameworkILLinkArgs Condition="'@(SharedFrameworkSuppressionsXml)' != ''" >$(SharedFrameworkILLinkArgs) --link-attributes "@(SharedFrameworkSuppressionsXml->'%(FullPath)', '" --link-attributes "')"</SharedFrameworkILLinkArgs> + </PropertyGroup> + + <ItemGroup> + <SharedFrameworkAssembly RootMode="library" /> + </ItemGroup> + + <ILLink AssemblyPaths="" + RootAssemblyNames="@(SharedFrameworkAssembly)" + OutputDirectory="$([MSBuild]::NormalizeDirectory('$(ILLinkTrimAssemblyArtifactsRootDir)', 'trimmed-runtimepack'))" + ExtraArgs="$(SharedFrameworkILLinkArgs)" + ToolExe="$(_DotNetHostFileName)" + ToolPath="$(_DotNetHostDirectory)" /> + + <!-- Create a marker file which serves as the target's output to enable incremental builds. --> + <MakeDir Directories="$([System.IO.Path]::GetDirectoryName('$(SharedFrameworkAssembliesMarkerFile)'))" /> + <Touch Files="$(SharedFrameworkAssembliesMarkerFile)" + AlwaysCreate="true" /> + </Target> + +</Project> diff --git a/src/libraries/shims.proj b/src/libraries/shims.proj new file mode 100644 index 00000000000..5c138fd1e70 --- /dev/null +++ b/src/libraries/shims.proj @@ -0,0 +1,19 @@ +<Project Sdk="Microsoft.Build.Traversal"> + + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + </PropertyGroup> + + <!-- Reference the source project shims which themselves then reference their corresponding ref project, if it exists. --> + <ItemGroup> + <ProjectReference Include="shims\src\*.csproj" /> + </ItemGroup> + + <ItemGroup Condition="'$(RefOnly)' == 'true'"> + <ReferenceShimProject Include="shims\ref\*.csproj" /> + <ProjectReference Include="@(ReferenceShimProject)" /> + <!-- Omit projects which depend on source projects to be built. --> + <ProjectReference Remove="@(ReferenceShimProject->'shims\src\%(Filename)%(Extension)')" /> + </ItemGroup> + +</Project> diff --git a/src/libraries/shims/Directory.Build.props b/src/libraries/shims/Directory.Build.props index 6c19fac9a86..679f0230ef3 100644 --- a/src/libraries/shims/Directory.Build.props +++ b/src/libraries/shims/Directory.Build.props @@ -1,12 +1,11 @@ <Project> <Import Project="..\Directory.Build.props" /> - <Import Project="netfxreference.props" /> - - <PropertyGroup Condition="'$(IsFrameworkSupportFacade)' == 'true'"> - <IsNETCoreAppSrc>true</IsNETCoreAppSrc> - <IsNETCoreAppRef>true</IsNETCoreAppRef> + <PropertyGroup> + <TargetFramework>$(NetCoreAppCurrent)-$(TargetOS)</TargetFramework> + <!-- By default make shims compile against reference assemblies. --> + <CompileUsingReferenceAssemblies>true</CompileUsingReferenceAssemblies> <IsPartialFacadeAssembly>true</IsPartialFacadeAssembly> <GenFacadesIgnoreMissingTypes>true</GenFacadesIgnoreMissingTypes> <!-- ensure the desktop compat shims reference the lowest possible version of dependencies @@ -14,7 +13,11 @@ to reference the latest packages. netstandard.dll doesn't need to do this since it has no dangling dependencies --> <GenFacadesForceZeroVersionSeeds Condition="'$(MSBuildProjectName)' != 'netstandard'">true</GenFacadesForceZeroVersionSeeds> - <HasMatchingContract>true</HasMatchingContract> + <!-- Opt out of some features which are on by default. --> + <EnableDllImportGenerator>false</EnableDllImportGenerator> + <RunApiCompat>false</RunApiCompat> + <ILLinkTrimAssembly>false</ILLinkTrimAssembly> + <AddOSPlatformAttributes>false</AddOSPlatformAttributes> </PropertyGroup> <ItemGroup Condition="'$(MSBuildProjectName)' == 'System.Runtime' or @@ -26,10 +29,34 @@ <Compile Include="$(MSBuildThisFileDirectory)System.Void.cs" /> </ItemGroup> - <ItemGroup Condition="'$(IsFrameworkSupportFacade)' == 'true'"> - <!-- include any forwards needed by both generated and manual projects --> - <Compile Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildProjectName).forwards.cs')" - Include="$(MSBuildThisFileDirectory)$(MSBuildProjectName).forwards.cs" /> + <ItemGroup> + <!-- Include any forwards needed by both ref and src projects. --> + <Compile Include="$(MSBuildThisFileDirectory)$(MSBuildProjectName).forwards.cs" + Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildProjectName).forwards.cs')" /> + </ItemGroup> + + <!-- Include any props setting files needed by both ref and src projects.--> + <Import Project="$(MSBuildThisFileDirectory)$(MSBuildProjectName).props" + Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildProjectName).props')" /> + + <ItemGroup> + <ProjectReference Include="$(MSBuildThisFileDirectory)..\sfx-src.proj" Condition="'$(RefOnly)' != 'true'" /> + <ProjectReference Include="$(MSBuildThisFileDirectory)..\sfx-ref.proj" Condition="'$(RefOnly)' == 'true'" /> + </ItemGroup> + + <ItemGroup Condition="'$(MSBuildProjectName)' != 'netstandard'"> + <!-- .NET Framework shims compile against OOBs and the netstandard shim. --> + <ProjectReference Include="$(MSBuildThisFileDirectory)src\netstandard.csproj" /> + <ProjectReference Include="$(MSBuildThisFileDirectory)..\oob-src.proj" Condition="'$(RefOnly)' != 'true'" /> + <ProjectReference Include="$(MSBuildThisFileDirectory)..\oob-ref.proj" Condition="'$(RefOnly)' == 'true'" /> + </ItemGroup> + + <ItemGroup> + <!-- System.Data.SqlClient is not live built anymore, reference it manually to avoid tfm nuget selection fallback errors + when the TargetOS i.e. is MacCatalyst. Set Private false so that it doesn't flow down to consuming projects. --> + <PackageDownload Include="System.Data.SqlClient" + Version="[$(SystemDataSqlClientVersion)]" /> + <Reference Include="$([MSBuild]::NormalizePath('$(NuGetPackageRoot)', 'system.data.sqlclient', '$(SystemDataSqlClientVersion)', 'ref', 'netcoreapp2.1', 'System.Data.SqlClient.dll'))" Private="false" /> </ItemGroup> </Project> diff --git a/src/libraries/shims/Directory.Build.targets b/src/libraries/shims/Directory.Build.targets index d7674d22fd3..0780fa92ad2 100644 --- a/src/libraries/shims/Directory.Build.targets +++ b/src/libraries/shims/Directory.Build.targets @@ -1,21 +1,17 @@ <Project> + <!-- Define before the import so that ResolvedMatchingContract is set before resolveContract.targets is imported. --> + <ItemGroup Condition="'$(MSBuildProjectName)' != 'netstandard'"> + <PackageDownload Include="Microsoft.NETFramework.ReferenceAssemblies.net48" + Version="[$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)]" /> + <ResolvedMatchingContract Include="$([MSBuild]::NormalizePath('$(NuGetPackageRoot)', 'microsoft.netframework.referenceassemblies.net48', '$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)', 'build', '.NETFramework', 'v4.8', '$(MSBuildProjectName).dll'))" /> + </ItemGroup> + <Import Project="..\Directory.Build.targets" /> - <PropertyGroup> - <NETFrameworkReferenceAssemblyTFM>net48</NETFrameworkReferenceAssemblyTFM> - <NetFxRefPath>$([MSBuild]::NormalizeDirectory('$(NuGetPackageRoot)', 'microsoft.netframework.referenceassemblies.$(NETFrameworkReferenceAssemblyTFM)', '$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)', 'build', '.NETFramework', 'v4.8'))</NetFxRefPath> + <!-- Tell GenFacades to use reference assemblies instead of the implementation assemblies (for most of the shims). --> + <PropertyGroup Condition="'$(CompileUsingReferenceAssemblies)' != 'false'"> + <TrimOutPrivateAssembliesFromReferencePath>true</TrimOutPrivateAssembliesFromReferencePath> + <GeneratePartialFacadeSourceDependsOn>$(GeneratePartialFacadeSourceDependsOn);FindReferenceAssembliesForReferences</GeneratePartialFacadeSourceDependsOn> + <GenFacadesReferencePathItemName>ReferencePathWithRefAssemblies</GenFacadesReferencePathItemName> </PropertyGroup> - - <!-- Download the corresponding targeting pack to build against the contract. --> - <ItemGroup Condition="'$(IsFrameworkSupportFacade)' == 'true' and '$(MSBuildProjectName)' == 'netstandard'"> - <PackageDownload Include="NETStandard.Library.Ref" - Version="[$(NETStandardLibraryRefVersion)]" /> - <ResolvedMatchingContract Include="$(NETStandard21RefPath)$(MSBuildProjectName).dll" /> - </ItemGroup> - - <ItemGroup Condition="'$(IsFrameworkSupportFacade)' == 'true' and '$(MSBuildProjectName)' != 'netstandard'"> - <PackageDownload Include="Microsoft.NETFramework.ReferenceAssemblies.$(NETFrameworkReferenceAssemblyTFM)" - Version="[$(MicrosoftNETFrameworkReferenceAssembliesLatestPackageVersion)]" /> - <ResolvedMatchingContract Include="$(NetFxRefPath)$(MSBuildProjectName).dll" /> - </ItemGroup> </Project> diff --git a/src/libraries/shims/generated/System.Xml.props b/src/libraries/shims/System.Xml.props index 15ea92775b2..aa8f28fe456 100644 --- a/src/libraries/shims/generated/System.Xml.props +++ b/src/libraries/shims/System.Xml.props @@ -1,6 +1,6 @@ <Project> <ItemGroup> - <!-- type is obsolete in a way that prevents compilation, as such we cannot type forward to it, omit since it can never be used --> + <!-- type is obsolete in a way that prevents compilation, as such we cannot type forward to it, omit since it can never be used. --> <GenFacadesOmitType Include="System.Xml.IApplicationResourceStreamResolver" /> </ItemGroup> </Project> diff --git a/src/libraries/shims/generateShims.proj b/src/libraries/shims/generateShims.proj deleted file mode 100644 index fd7404dba99..00000000000 --- a/src/libraries/shims/generateShims.proj +++ /dev/null @@ -1,60 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - <!-- IMPORTANT: please rebuild this project and check in the generated output - when making changes to this file --> - <ItemGroup> - <GenFacadesContracts Include="@(NetFxReference)" ContractDir="NetFxRefPath" /> - <GenFacadesContracts Include="netstandard" ContractDir="NETStandard21RefPath" /> - </ItemGroup> - - <Target Name="GenerateShimProjectFiles" - Inputs="$(MSBuildProjectFile)" - Outputs="generated/%(GenFacadesContracts.Identity).csproj"> - <PropertyGroup> - <_contractName>%(GenFacadesContracts.Identity)</_contractName> - <_contractStrongNameKeyId>%(GenFacadesContracts.StrongNameKeyId)</_contractStrongNameKeyId> - <_contractStrongNameKeyId Condition="'$(_contractStrongNameKeyId)' == ''">Microsoft</_contractStrongNameKeyId> - <_contractAssembly>$(%(GenFacadesContracts.ContractDir))$(_contractName).dll</_contractAssembly> - <_contractProjectFile>generated/$(_contractName).csproj</_contractProjectFile> - </PropertyGroup> - - <GetAssemblyIdentity AssemblyFiles="$(_contractAssembly)"> - <Output TaskParameter="Assemblies" ItemName="_contractIdentity" /> - </GetAssemblyIdentity> - - <PropertyGroup> - <_contractAssemblyVersion>%(_contractIdentity.Version)</_contractAssemblyVersion> - <_contractAssemblyPublicKey>%(_contractIdentity.PublicKeyToken)</_contractAssemblyPublicKey> - <_contractStrongNameKeyId Condition="'$(_contractAssemblyPublicKey)' == 'b77a5c561934e089'">ECMA</_contractStrongNameKeyId> - <_contractStrongNameKeyId Condition="'$(_contractAssemblyPublicKey)' == 'b03f5f7f11d50a3a'">Microsoft</_contractStrongNameKeyId> - <_contractStrongNameKeyId Condition="'$(_contractAssemblyPublicKey)' == '31bf3856ad364e35'">MicrosoftShared</_contractStrongNameKeyId> - <_contractStrongNameKeyId Condition="'$(_contractAssemblyPublicKey)' == 'cc7b13ffcd2ddd51'">Open</_contractStrongNameKeyId> - <_contractProjectContent><![CDATA[<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'%24(MSBuildProjectFullPath)' == '%24(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>$(_contractAssemblyVersion)</AssemblyVersion> - <StrongNameKeyId>$(_contractStrongNameKeyId)</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'%24(MSBuildProjectFullPath)' == '%24(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> -]]></_contractProjectContent> - </PropertyGroup> - - <Error Condition="'$(_contractStrongNameKeyId)' == ''" Text="Could not determine StrongNameKeyId for contract $(_contractName) with public key token $(_contractAssemblyPublicKey)" /> - - <WriteLinesToFile - File="$(_contractProjectFile)" - Lines="$(_contractProjectContent)" - Overwrite="true" /> - <Message Importance="High" Text="Generated $(_contractProjectFile)" /> - </Target> - - <!-- boilerplate to satisfy Microsoft.Common.Targets --> - <PropertyGroup> - <SkipCopyBuildProduct>true</SkipCopyBuildProduct> - </PropertyGroup> - <Target Name="CreateManifestResourceNames" /> - <Target Name="CoreCompile" DependsOnTargets="GenerateShimProjectFiles" /> -</Project> diff --git a/src/libraries/shims/generated/Directory.Build.props b/src/libraries/shims/generated/Directory.Build.props deleted file mode 100644 index 4694448ae16..00000000000 --- a/src/libraries/shims/generated/Directory.Build.props +++ /dev/null @@ -1,37 +0,0 @@ -<Project> - <PropertyGroup> - <!-- Shims built from this directory will double as reference and runtime facades --> - <BinPlaceRef>true</BinPlaceRef> - <IsFrameworkSupportFacade>true</IsFrameworkSupportFacade> - <!-- if a manual project exists, it will be used for the runtime facade instead --> - <IsRuntimeAssembly Condition="!Exists('$(MSBuildThisFileDirectory)../manual/$(MSBuildProjectName).csproj')">true</IsRuntimeAssembly> - </PropertyGroup> - - <Import Condition="Exists('$(MSBuildProjectName).props')" Project="$(MSBuildProjectName).props" /> - <Import Project="..\Directory.Build.props" /> - - <PropertyGroup> - <TargetFramework>$(NetCoreAppCurrent)</TargetFramework> - </PropertyGroup> - - <!-- System.Data.SqlClient is not live built anymore, reference it manually. --> - <ItemGroup> - <PackageReference Include="System.Data.SqlClient" - Version="$(SystemDataSqlClientVersion)" /> - </ItemGroup> - - <ItemGroup> - <!-- reference everything but self --> - <!-- Type duplicated in Microsoft.Extensions.DependencyModel. Exclude it for now: https://github.com/dotnet/runtime/issues/34420 --> - <ReferencePath - Include="$(NetCoreAppCurrentRefPath)*.dll" - Exclude="$(NetCoreAppCurrentRefPath)$(MSBuildProjectName).dll; - $(NetCoreAppCurrentRefPath)netstandard.dll; - $(NetCoreAppCurrentRefPath)Microsoft.Extensions.DependencyModel.dll" /> - - <!-- required by compiler to resolve core types --> - <ProjectReference Include="netstandard.csproj" - Condition="'$(MSBuildProjectName)' != 'netstandard'" - SkipUseReferenceAssembly="true" /> - </ItemGroup> -</Project> diff --git a/src/libraries/shims/generated/Microsoft.VisualBasic.csproj b/src/libraries/shims/generated/Microsoft.VisualBasic.csproj deleted file mode 100644 index 086cd1f1c38..00000000000 --- a/src/libraries/shims/generated/Microsoft.VisualBasic.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>10.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.ComponentModel.DataAnnotations.csproj b/src/libraries/shims/generated/System.ComponentModel.DataAnnotations.csproj deleted file mode 100644 index 926a3d52b61..00000000000 --- a/src/libraries/shims/generated/System.ComponentModel.DataAnnotations.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Configuration.csproj b/src/libraries/shims/generated/System.Configuration.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Configuration.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Core.csproj b/src/libraries/shims/generated/System.Core.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Core.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Data.csproj b/src/libraries/shims/generated/System.Data.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Data.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Drawing.csproj b/src/libraries/shims/generated/System.Drawing.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Drawing.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.IO.Compression.FileSystem.csproj b/src/libraries/shims/generated/System.IO.Compression.FileSystem.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.IO.Compression.FileSystem.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Net.csproj b/src/libraries/shims/generated/System.Net.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Net.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Numerics.csproj b/src/libraries/shims/generated/System.Numerics.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Numerics.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Runtime.Serialization.csproj b/src/libraries/shims/generated/System.Runtime.Serialization.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Runtime.Serialization.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Security.csproj b/src/libraries/shims/generated/System.Security.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Security.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.ServiceModel.Web.csproj b/src/libraries/shims/generated/System.ServiceModel.Web.csproj deleted file mode 100644 index 926a3d52b61..00000000000 --- a/src/libraries/shims/generated/System.ServiceModel.Web.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.ServiceProcess.csproj b/src/libraries/shims/generated/System.ServiceProcess.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.ServiceProcess.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Transactions.csproj b/src/libraries/shims/generated/System.Transactions.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Transactions.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Web.csproj b/src/libraries/shims/generated/System.Web.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Web.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Windows.csproj b/src/libraries/shims/generated/System.Windows.csproj deleted file mode 100644 index e501d2d3dfd..00000000000 --- a/src/libraries/shims/generated/System.Windows.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>Microsoft</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Xml.Linq.csproj b/src/libraries/shims/generated/System.Xml.Linq.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Xml.Linq.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Xml.Serialization.csproj b/src/libraries/shims/generated/System.Xml.Serialization.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Xml.Serialization.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.Xml.csproj b/src/libraries/shims/generated/System.Xml.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.Xml.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/System.csproj b/src/libraries/shims/generated/System.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/System.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/WindowsBase.csproj b/src/libraries/shims/generated/WindowsBase.csproj deleted file mode 100644 index 926a3d52b61..00000000000 --- a/src/libraries/shims/generated/WindowsBase.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/mscorlib.csproj b/src/libraries/shims/generated/mscorlib.csproj deleted file mode 100644 index da05b9146f5..00000000000 --- a/src/libraries/shims/generated/mscorlib.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>4.0.0.0</AssemblyVersion> - <StrongNameKeyId>ECMA</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/generated/netstandard.csproj b/src/libraries/shims/generated/netstandard.csproj deleted file mode 100644 index 7cf2a84f2ef..00000000000 --- a/src/libraries/shims/generated/netstandard.csproj +++ /dev/null @@ -1,11 +0,0 @@ -<Project> - <!-- this is a generated project, to make changes update the template above this directory - and rebuild generateShims.proj --> - <!-- only import SDK if this project is built directly --> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> - <PropertyGroup> - <AssemblyVersion>2.1.0.0</AssemblyVersion> - <StrongNameKeyId>Open</StrongNameKeyId> - </PropertyGroup> - <Import Condition="'$(MSBuildProjectFullPath)' == '$(MSBuildThisFileFullPath)'" Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" /> -</Project> diff --git a/src/libraries/shims/manual/Directory.Build.props b/src/libraries/shims/manual/Directory.Build.props deleted file mode 100644 index d2bb299a05e..00000000000 --- a/src/libraries/shims/manual/Directory.Build.props +++ /dev/null @@ -1,26 +0,0 @@ -<Project> - <PropertyGroup> - <!-- ensure these projects use a different intermediate and output directory than generated projects --> - <OutDirName>manual.$(MSBuildProjectName)</OutDirName> - <IsFrameworkSupportFacade>true</IsFrameworkSupportFacade> - </PropertyGroup> - - <Import Project="..\Directory.Build.props" /> - - <!-- import generated projects in order to share generated properties --> - <Import Project="..\generated\$(MSBuildProjectName).csproj" /> - - <PropertyGroup> - <IsRuntimeAssembly>true</IsRuntimeAssembly> - <TargetFramework>$(NetCoreAppCurrent)</TargetFramework> - </PropertyGroup> - - <ItemGroup> - <ReferencePath Include="$(NetCoreAppCurrentRuntimePath)System.*.dll; - $(NetCoreAppCurrentRuntimePath)Microsoft.Win32.*.dll; - $(NetCoreAppCurrentRuntimePath)netstandard.dll" - Exclude="$(NetCoreAppCurrentRuntimePath)$(MSBuildProjectName).dll; - $(NetCoreAppCurrentRuntimePath)System.*.Native.dll" /> - <ProjectReference Include="$(CoreLibProject)" /> - </ItemGroup> -</Project> diff --git a/src/libraries/shims/manual/System.Data.csproj b/src/libraries/shims/manual/System.Data.csproj deleted file mode 100644 index 2f89b12251a..00000000000 --- a/src/libraries/shims/manual/System.Data.csproj +++ /dev/null @@ -1,9 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - <ItemGroup> - <Compile Include="System.Data.forwards.cs" /> - </ItemGroup> - <ItemGroup> - <!-- System.Data.SqlClient is not live built anymore, reference it manually. --> - <PackageReference Include="System.Data.SqlClient" Version="$(SystemDataSqlClientVersion)" /> - </ItemGroup> -</Project> diff --git a/src/libraries/shims/manual/System.Xml.csproj b/src/libraries/shims/manual/System.Xml.csproj deleted file mode 100644 index 11e762bbe73..00000000000 --- a/src/libraries/shims/manual/System.Xml.csproj +++ /dev/null @@ -1,3 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - <!-- required in order to include runtime facade to obsoleted type System.Xml.IApplicationResourceStreamResolver --> -</Project>
\ No newline at end of file diff --git a/src/libraries/shims/manual/System.csproj b/src/libraries/shims/manual/System.csproj deleted file mode 100644 index f88c9ea94c0..00000000000 --- a/src/libraries/shims/manual/System.csproj +++ /dev/null @@ -1,5 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - <ItemGroup> - <Compile Include="System.forwards.cs" /> - </ItemGroup> -</Project>
\ No newline at end of file diff --git a/src/libraries/shims/manual/mscorlib.csproj b/src/libraries/shims/manual/mscorlib.csproj deleted file mode 100644 index 43e1fcbd742..00000000000 --- a/src/libraries/shims/manual/mscorlib.csproj +++ /dev/null @@ -1,5 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - <ItemGroup> - <Compile Include="mscorlib.forwards.cs" /> - </ItemGroup> -</Project> diff --git a/src/libraries/shims/netfxreference.props b/src/libraries/shims/netfxreference.props deleted file mode 100644 index deed47dc14b..00000000000 --- a/src/libraries/shims/netfxreference.props +++ /dev/null @@ -1,27 +0,0 @@ -<Project> - <!-- IMPORTANT: please rebuild generateShims.proj when making changes to this file --> - <ItemGroup> - <NetFxReference Include="mscorlib" /> - <NetFxReference Include="Microsoft.VisualBasic" /> - <NetFxReference Include="System" /> - <NetFxReference Include="System.ComponentModel.DataAnnotations" /> - <NetFxReference Include="System.Configuration" /> - <NetFxReference Include="System.Core" /> - <NetFxReference Include="System.Data" /> - <NetFxReference Include="System.Drawing" /> - <NetFxReference Include="System.IO.Compression.FileSystem" /> - <NetFxReference Include="System.Net" /> - <NetFxReference Include="System.Numerics" /> - <NetFxReference Include="System.Runtime.Serialization" /> - <NetFxReference Include="System.Security" /> - <NetFxReference Include="System.ServiceProcess" /> - <NetFxReference Include="System.ServiceModel.Web" /> - <NetFxReference Include="System.Transactions" /> - <NetFxReference Include="System.Web" /> - <NetFxReference Include="System.Windows" /> - <NetFxReference Include="System.Xml" /> - <NetFxReference Include="System.Xml.Serialization" /> - <NetFxReference Include="System.Xml.Linq" /> - <NetFxReference Include="WindowsBase" /> - </ItemGroup> -</Project> diff --git a/src/libraries/shims/ref/Directory.Build.props b/src/libraries/shims/ref/Directory.Build.props new file mode 100644 index 00000000000..bfad4de87ff --- /dev/null +++ b/src/libraries/shims/ref/Directory.Build.props @@ -0,0 +1,8 @@ +<Project> + <Import Project="..\Directory.Build.props" /> + + <PropertyGroup> + <!-- Allow shim ref projects to reference source projects. --> + <SkipValidateReferenceAssemblyProjectReferences>true</SkipValidateReferenceAssemblyProjectReferences> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/ref/System.Data.csproj b/src/libraries/shims/ref/System.Data.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/ref/System.Data.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/ref/System.Xml.csproj b/src/libraries/shims/ref/System.Xml.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/ref/System.Xml.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/ref/System.csproj b/src/libraries/shims/ref/System.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/ref/System.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/ref/mscorlib.csproj b/src/libraries/shims/ref/mscorlib.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/ref/mscorlib.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/Directory.Build.props b/src/libraries/shims/src/Directory.Build.props new file mode 100644 index 00000000000..5841ecb19f2 --- /dev/null +++ b/src/libraries/shims/src/Directory.Build.props @@ -0,0 +1,15 @@ +<Project> + <Import Project="..\Directory.Build.props" /> + + <PropertyGroup> + <ContractProject>$(MSBuildThisFileDirectory)..\ref\$(MSBuildProjectName).csproj</ContractProject> + <IsRuntimeAndReferenceAssembly Condition="!Exists('$(ContractProject)')">true</IsRuntimeAndReferenceAssembly> + </PropertyGroup> + + <!-- Reference the contract project so that this project's ReferenceAssembly attribute points to the contract, as expected. --> + <ItemGroup Condition="'$(IsRuntimeAndReferenceAssembly)' != 'true'"> + <ProjectReference Include="$(ContractProject)" + ReferenceOutputAssembly="false" + OutputItemType="ResolvedMatchingContractOverride" /> + </ItemGroup> +</Project> diff --git a/src/libraries/shims/src/Microsoft.VisualBasic.csproj b/src/libraries/shims/src/Microsoft.VisualBasic.csproj new file mode 100644 index 00000000000..46ce55f6fe7 --- /dev/null +++ b/src/libraries/shims/src/Microsoft.VisualBasic.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>10.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.ComponentModel.DataAnnotations.csproj b/src/libraries/shims/src/System.ComponentModel.DataAnnotations.csproj new file mode 100644 index 00000000000..ab1cdec3ed6 --- /dev/null +++ b/src/libraries/shims/src/System.ComponentModel.DataAnnotations.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Configuration.csproj b/src/libraries/shims/src/System.Configuration.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Configuration.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Core.csproj b/src/libraries/shims/src/System.Core.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Core.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Data.csproj b/src/libraries/shims/src/System.Data.csproj new file mode 100644 index 00000000000..d2d96b4f496 --- /dev/null +++ b/src/libraries/shims/src/System.Data.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + <CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies> + </PropertyGroup> + <ItemGroup> + <Compile Include="System.Data.forwards.cs" /> + </ItemGroup> +</Project> diff --git a/src/libraries/shims/manual/System.Data.forwards.cs b/src/libraries/shims/src/System.Data.forwards.cs index 53ce0c7c4b7..16a3a2c8bca 100644 --- a/src/libraries/shims/manual/System.Data.forwards.cs +++ b/src/libraries/shims/src/System.Data.forwards.cs @@ -3,8 +3,5 @@ // Add any internal types that we need to forward from System.Data. -// These types are required for Desktop to Core serialization as they are not covered by GenAPI because they are not exposed in the ref assembly. -#if NETCOREAPP -// System.Data.Odbc is only supported on netcoreapp +// These types are required for Desktop to Core serialization as they are not covered by GenFacades because they are not exposed in the ref assembly. [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Data.Odbc.ODBC32))] -#endif diff --git a/src/libraries/shims/src/System.Drawing.csproj b/src/libraries/shims/src/System.Drawing.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Drawing.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.IO.Compression.FileSystem.csproj b/src/libraries/shims/src/System.IO.Compression.FileSystem.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.IO.Compression.FileSystem.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Net.csproj b/src/libraries/shims/src/System.Net.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Net.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Numerics.csproj b/src/libraries/shims/src/System.Numerics.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Numerics.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Runtime.Serialization.csproj b/src/libraries/shims/src/System.Runtime.Serialization.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Runtime.Serialization.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Security.csproj b/src/libraries/shims/src/System.Security.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Security.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.ServiceModel.Web.csproj b/src/libraries/shims/src/System.ServiceModel.Web.csproj new file mode 100644 index 00000000000..ab1cdec3ed6 --- /dev/null +++ b/src/libraries/shims/src/System.ServiceModel.Web.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.ServiceProcess.csproj b/src/libraries/shims/src/System.ServiceProcess.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.ServiceProcess.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Transactions.csproj b/src/libraries/shims/src/System.Transactions.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Transactions.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Web.csproj b/src/libraries/shims/src/System.Web.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Web.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Windows.csproj b/src/libraries/shims/src/System.Windows.csproj new file mode 100644 index 00000000000..b65b1ff9c70 --- /dev/null +++ b/src/libraries/shims/src/System.Windows.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>Microsoft</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Xml.Linq.csproj b/src/libraries/shims/src/System.Xml.Linq.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Xml.Linq.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Xml.Serialization.csproj b/src/libraries/shims/src/System.Xml.Serialization.csproj new file mode 100644 index 00000000000..6d4156e41f4 --- /dev/null +++ b/src/libraries/shims/src/System.Xml.Serialization.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/System.Xml.csproj b/src/libraries/shims/src/System.Xml.csproj new file mode 100644 index 00000000000..b1ba3bbbb23 --- /dev/null +++ b/src/libraries/shims/src/System.Xml.csproj @@ -0,0 +1,8 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <!-- required in order to include runtime facade to obsoleted type System.Xml.IApplicationResourceStreamResolver --> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + <CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies> + </PropertyGroup> +</Project>
\ No newline at end of file diff --git a/src/libraries/shims/src/System.csproj b/src/libraries/shims/src/System.csproj new file mode 100644 index 00000000000..e11b22d3519 --- /dev/null +++ b/src/libraries/shims/src/System.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + <CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies> + </PropertyGroup> + <ItemGroup> + <Compile Include="System.forwards.cs" /> + </ItemGroup> +</Project>
\ No newline at end of file diff --git a/src/libraries/shims/manual/System.forwards.cs b/src/libraries/shims/src/System.forwards.cs index 7502705da1f..19fac75cffc 100644 --- a/src/libraries/shims/manual/System.forwards.cs +++ b/src/libraries/shims/src/System.forwards.cs @@ -3,7 +3,7 @@ // Add any internal types that we need to forward from System. -// These types are required for Desktop to Core serialization as they are not covered by GenAPI because they are marked as internal. +// These types are required for Desktop to Core serialization as they are not covered by GenFacades because they are marked as internal. [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Collections.Generic.TreeSet<>))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.IO.Compression.ZLibException))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Net.CookieVariant))] diff --git a/src/libraries/shims/src/WindowsBase.csproj b/src/libraries/shims/src/WindowsBase.csproj new file mode 100644 index 00000000000..ab1cdec3ed6 --- /dev/null +++ b/src/libraries/shims/src/WindowsBase.csproj @@ -0,0 +1,6 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>MicrosoftShared</StrongNameKeyId> + </PropertyGroup> +</Project> diff --git a/src/libraries/shims/src/mscorlib.csproj b/src/libraries/shims/src/mscorlib.csproj new file mode 100644 index 00000000000..718cd1a3f18 --- /dev/null +++ b/src/libraries/shims/src/mscorlib.csproj @@ -0,0 +1,10 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>4.0.0.0</AssemblyVersion> + <StrongNameKeyId>ECMA</StrongNameKeyId> + <CompileUsingReferenceAssemblies>false</CompileUsingReferenceAssemblies> + </PropertyGroup> + <ItemGroup> + <Compile Include="mscorlib.forwards.cs" /> + </ItemGroup> +</Project> diff --git a/src/libraries/shims/manual/mscorlib.forwards.cs b/src/libraries/shims/src/mscorlib.forwards.cs index 874380a6550..5598f5bf8f2 100644 --- a/src/libraries/shims/manual/mscorlib.forwards.cs +++ b/src/libraries/shims/src/mscorlib.forwards.cs @@ -3,7 +3,7 @@ // Add any internal types that we need to forward from mscorlib. -// These types are required for Desktop to Core serialization as they are not covered by GenAPI because they are marked as internal. +// These types are required for Desktop to Core serialization as they are not covered by GenFacades because they are marked as internal. [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Collections.Generic.GenericComparer<>))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Collections.Generic.NullableComparer<>))] [assembly:System.Runtime.CompilerServices.TypeForwardedTo(typeof(System.Collections.Generic.ObjectComparer<>))] diff --git a/src/libraries/shims/src/netstandard.csproj b/src/libraries/shims/src/netstandard.csproj new file mode 100644 index 00000000000..cce47288ba6 --- /dev/null +++ b/src/libraries/shims/src/netstandard.csproj @@ -0,0 +1,13 @@ +<Project Sdk="Microsoft.NET.Sdk"> + <PropertyGroup> + <AssemblyVersion>2.1.0.0</AssemblyVersion> + <StrongNameKeyId>Open</StrongNameKeyId> + </PropertyGroup> + + <!-- Download the corresponding targeting pack to build against the contract. --> + <ItemGroup> + <PackageDownload Include="NETStandard.Library.Ref" + Version="[$(NETStandardLibraryRefVersion)]" /> + <ResolvedMatchingContract Include="$(NETStandard21RefPath)$(MSBuildProjectName).dll" /> + </ItemGroup> +</Project> diff --git a/src/libraries/src.proj b/src/libraries/src.proj deleted file mode 100644 index f104c029c55..00000000000 --- a/src/libraries/src.proj +++ /dev/null @@ -1,92 +0,0 @@ -<Project Sdk="Microsoft.Build.Traversal"> - - <PropertyGroup> - <TraversalGlobalProperties>BuildAllProjects=true</TraversalGlobalProperties> - </PropertyGroup> - - <PropertyGroup Condition="'$(BuildTargetFramework)' == 'net48'"> - <TargetFramework>$(BuildTargetFramework)</TargetFramework> - <!-- Filter out ProjectReferences which aren't compatible with the above TargetFramework. --> - <OmitIncompatibleProjectReferences>true</OmitIncompatibleProjectReferences> - <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> - </PropertyGroup> - - <ItemGroup> - <_allSrc Include="$(MSBuildThisFileDirectory)*\src\*.*proj" - Exclude="@(ProjectExclusions); - $(MSBuildThisFileDirectory)*\src\**\*.shproj" /> - <!-- Build these packages which reference many other projects in the allconfigurations leg only. --> - <_allSrc Remove="Microsoft.Internal.Runtime.AspNetCore.Transport\src\Microsoft.Internal.Runtime.AspNetCore.Transport.proj; - Microsoft.Internal.Runtime.WindowsDesktop.Transport\src\Microsoft.Internal.Runtime.WindowsDesktop.Transport.proj; - Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj" - Condition="'$(BuildAllConfigurations)' != 'true'" /> - - <!-- These projects do not need to be built during source-build. --> - <_allSrc Remove="Microsoft.Extensions.DependencyInjection.Specification.Tests\src\Microsoft.Extensions.DependencyInjection.Specification.Tests.csproj; - Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj" - Condition="'$(DotNetBuildFromSource)' == 'true'" /> - - <NonNetCoreAppProject Include="@(_allSrc)" - Exclude="@(NetCoreAppLibrary->'%(Identity)\src\%(Identity).csproj'); - $(MSBuildThisFileDirectory)Microsoft.VisualBasic.Core\src\Microsoft.VisualBasic.Core.vbproj" /> - <!-- During an official build, build the identity package only in the allconfigurations build, otherwise always. --> - <NonNetCoreAppProject Include="$(MSBuildThisFileDirectory)*\pkg\runtime.native.*.proj" Condition="'$(BuildingAnOfficialBuildLeg)' != 'true' or '$(BuildAllConfigurations)' == 'true'" /> - <!-- During an official Build, build the rid specific package matching the OutputRid only outside of an allconfigurations build and only when targeting the CoreCLR runtime. - The limitation on the CoreCLR runtime is entirely artificial but avoids duplicate assets being publish. --> - <NonNetCoreAppProject Include="$(MSBuildThisFileDirectory)*\pkg\runtime.$(OutputRid).*.proj" Condition="'$(BuildingAnOfficialBuildLeg)' != 'true' or - ('$(BuildAllConfigurations)' != 'true' and '$(RuntimeFlavor)' == '$(PrimaryRuntimeFlavor)')" /> - - <NetCoreAppProject Include="$(CoreLibProject); - @(_allSrc)" - Exclude="@(NonNetCoreAppProject)" /> - <ManualShimProject Include="shims\manual\*.csproj" Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''" /> - <ApiCompatProject Include="apicompat\ApiCompat.proj" - Condition="'$(DotNetBuildFromSource)' != 'true' and - ('$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == '') and - '$(RunApiCompat)' != 'false'" /> - </ItemGroup> - - <ItemGroup> - <ProjectReference Include="@(NetCoreAppProject)" /> - - <!-- Restore only and build before/after. --> - <ProjectReference Include="@(NonNetCoreAppProject); - @(ManualShimProject); - @(ApiCompatProject)" - Condition="'$(MSBuildRestoreSessionId)' != ''" /> - </ItemGroup> - - <Target Name="BuildNonNetCoreAppProjects" - AfterTargets="Build"> - <MSBuild Targets="Build" - BuildInParallel="true" - Projects="@(NonNetCoreAppProject)" - Properties="$(TraversalGlobalProperties)" /> - </Target> - - <Target Name="BuildManualShims" - AfterTargets="BuildNonNetCoreAppProjects" - Condition="'@(ManualShimProject)' != ''"> - <MSBuild Targets="Build" - Projects="@(ManualShimProject)" - Properties="$(TraversalGlobalProperties)" /> - </Target> - - <Import Project="$(MSBuildThisFileDirectory)illink-trimassemblies.targets" - Condition="'$(BuildTargetFramework)' == '$(NetCoreAppCurrent)' or '$(BuildTargetFramework)' == ''" /> - - <Target Name="RunApiCompat" - Condition="'@(ApiCompatProject)' != ''" - AfterTargets="BuildManualShims"> - <MSBuild Targets="Build" - Projects="@(ApiCompatProject)" - Properties="$(TraversalGlobalProperties)" /> - </Target> - - <Target Name="SetAzureDevOpsVariableForBuiltPackages" - Condition="'$(ContinuousIntegrationBuild)' == 'true'" - AfterTargets="Build;Pack"> - <Message Condition="Exists('$(ArtifactsDir)packages')" Importance="High" Text="##vso[task.setvariable variable=_librariesBuildProducedPackages]true" /> - </Target> - -</Project> diff --git a/src/libraries/testPackages/build/Directory.Build.props b/src/libraries/testPackages/build/Directory.Build.props index d26162f97bd..b61b68b026e 100644 --- a/src/libraries/testPackages/build/Directory.Build.props +++ b/src/libraries/testPackages/build/Directory.Build.props @@ -5,5 +5,5 @@ </PropertyGroup> <Import Project="Versions.props" /> - <Import Project="netfxreference.props" /> + <Import Project="NetCoreAppLibrary.props" /> </Project> diff --git a/src/libraries/testPackages/testPackages.proj b/src/libraries/testPackages/testPackages.proj index c0924b462ec..a27484cc658 100644 --- a/src/libraries/testPackages/testPackages.proj +++ b/src/libraries/testPackages/testPackages.proj @@ -43,7 +43,7 @@ $(RepoRoot)NuGet.config; $(RepositoryEngineeringDir)Versions.props; $(RepositoryEngineeringDir)targetingpacks.targets; - $(LibrariesProjectRoot)shims\netfxreference.props; + $(LibrariesProjectRoot)NetCoreAppLibrary.props; build\packageTest.targets; build\Directory.Build.props; build\Directory.Build.targets" diff --git a/src/libraries/tests.proj b/src/libraries/tests.proj index 133f62f029a..0aaa1549675 100644 --- a/src/libraries/tests.proj +++ b/src/libraries/tests.proj @@ -1,5 +1,12 @@ <Project Sdk="Microsoft.Build.Traversal"> + <PropertyGroup Condition="'$(BuildAllConfigurations)' != 'true'"> + <!-- Build for NetCoreAppCurrent by default if no BuildTargetFramework is supplied or if not all configurations are built. --> + <TargetFramework>$([MSBuild]::ValueOrDefault('$(BuildTargetFramework)', '$(NetCoreAppCurrent)'))-$(TargetOS)</TargetFramework> + <!-- Filter ProjectReferences to build the best matching target framework only. --> + <FilterTraversalProjectReferences>true</FilterTraversalProjectReferences> + </PropertyGroup> + <PropertyGroup> <TestInParallel Condition="'$(Coverage)' == 'true'">false</TestInParallel> <!-- For tests we want to continue running if a test run failed. --> diff --git a/src/tests/Interop/IJW/getRefPackFolderFromArtifacts.ps1 b/src/tests/Interop/IJW/getRefPackFolderFromArtifacts.ps1 index 98242949f44..904f7ea3cb1 100644 --- a/src/tests/Interop/IJW/getRefPackFolderFromArtifacts.ps1 +++ b/src/tests/Interop/IJW/getRefPackFolderFromArtifacts.ps1 @@ -14,7 +14,7 @@ $refPackPath = "$repoRoot/artifacts/bin/ref/net$majorVersion.$minorVersion" if (-not (Test-Path $refPackPath)) { - Write-Error "Reference assemblies not found in the artifacts folder at '$refPackPath'. Did you build the libs.ref subset? Did the repo layout change?" + Write-Error "Reference assemblies not found in the artifacts folder at '$refPackPath'. Did you invoke 'build.cmd libs.sfx+libs.oob /p:RefOnly=true' to make sure that refs are built? Did the repo layout change?" return 1 } |