summaryrefslogtreecommitdiff
path: root/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk
diff options
context:
space:
mode:
Diffstat (limited to '.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk')
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.AfterCommon.targets14
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.BeforeCommon.targets14
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props42
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.targets53
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/GenerateDeps/GenerateDeps.proj63
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ComposeStore.targets453
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ConflictResolution.targets92
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.CrossGen.targets317
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultAssemblyInfo.targets27
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultOutputPaths.targets49
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultPackageConflictOverrides.targets234
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DesignerSupport.targets143
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DisableStandardFrameworkResolution.targets26
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateAssemblyInfo.targets170
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateSupportedRuntime.targets63
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets147
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.NuGetOfflineCache.targets25
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ObsoleteReferences.targets34
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.props17
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.targets20
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackStubs.targets27
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.props17
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.targets176
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PreserveCompilationContext.targets102
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets1021
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets215
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommon.targets198
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets17
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.props26
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.targets36
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets103
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CrossTargeting.targets111
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.props80
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets352
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.props31
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets31
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets61
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets368
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportPublishProfile.targets36
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.props34
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.targets133
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.props125
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets878
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.SupportedTargetFrameworks.props62
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets189
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets548
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolutionStubs.targets26
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.DotNet.PlatformAbstractions.dllbin0 -> 24600 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.Extensions.DependencyModel.dllbin0 -> 62488 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dllbin0 -> 281672 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll.config11
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.HostModel.dllbin0 -> 39288 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Newtonsoft.Json.dllbin0 -> 535648 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Common.dllbin0 -> 109640 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Configuration.dllbin0 -> 140872 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.DependencyResolver.Core.dllbin0 -> 82296 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Frameworks.dllbin0 -> 118648 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.LibraryModel.dllbin0 -> 52088 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Packaging.dllbin0 -> 662600 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.ProjectModel.dllbin0 -> 184928 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Protocol.dllbin0 -> 733256 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Versioning.dllbin0 -> 50760 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Collections.Immutable.dllbin0 -> 180624 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Reflection.Metadata.dllbin0 -> 451976 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/cs/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38472 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/de/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40008 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/es/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 39496 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/fr/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40032 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/it/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40008 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ja/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 44104 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ko/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 41032 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pl/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 41032 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pt-BR/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38984 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ru/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 47688 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/tr/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38984 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hans/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 35912 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hant/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 36424 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/Microsoft.NET.Build.Tasks.dllbin0 -> 680960 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/cs/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38496 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/de/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40008 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/es/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 39520 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/fr/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40008 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/it/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 40008 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ja/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 44104 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ko/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 41032 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pl/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 41056 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pt-BR/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38984 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ru/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 47688 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/tr/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 38984 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hans/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 35936 bytes
-rw-r--r--.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hant/Microsoft.NET.Build.Tasks.resources.dllbin0 -> 36424 bytes
91 files changed, 7017 insertions, 0 deletions
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.AfterCommon.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.AfterCommon.targets
new file mode 100644
index 0000000000..91eb4173c7
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.AfterCommon.targets
@@ -0,0 +1,14 @@
+<!--
+***********************************************************************************************
+Sdk.AfterCommon.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project>
+ <Import Project="..\targets\Microsoft.NET.Sdk.targets" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.BeforeCommon.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.BeforeCommon.targets
new file mode 100644
index 0000000000..9bb85ed073
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.BeforeCommon.targets
@@ -0,0 +1,14 @@
+<!--
+***********************************************************************************************
+Sdk.BeforeCommon.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project>
+ <Import Project="..\targets\Microsoft.NET.Sdk.BeforeCommon.targets" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
new file mode 100644
index 0000000000..7b62b00733
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.props
@@ -0,0 +1,42 @@
+<!--
+***********************************************************************************************
+Sdk.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <!--
+ Indicate to other targets that Microsoft.NET.Sdk is being used.
+
+ This must be set here (as early as possible, before Microsoft.Common.props)
+ so that everything that follows can depend on it.
+
+ In particular, Directory.Build.props and nuget package props need to be able
+ to use this flag and they are imported by Microsoft.Common.props.
+ -->
+ <UsingMicrosoftNETSdk>true</UsingMicrosoftNETSdk>
+
+ <!--
+ Indicate whether the set of SDK defaults that makes SDK style project concise are being used.
+ For example: globbing, importing msbuild common targets.
+
+ Similar to the property above, it must be set here.
+ -->
+ <UsingNETSdkDefaults>true</UsingNETSdkDefaults>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(MSBuildProjectFullPath)' == '$(ProjectToOverrideProjectExtensionsPath)'">
+ <MSBuildProjectExtensionsPath>$(ProjectExtensionsPathForSpecifiedProject)</MSBuildProjectExtensionsPath>
+ </PropertyGroup>
+
+ <Import Project="$(AlternateCommonProps)" Condition="'$(AlternateCommonProps)' != ''" />
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="'$(AlternateCommonProps)' == ''"/>
+ <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.props" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.targets
new file mode 100644
index 0000000000..c521e2b2c8
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/Sdk/Sdk.targets
@@ -0,0 +1,53 @@
+<!--
+***********************************************************************************************
+Sdk.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- Using the same property as Microsoft.CSharp.targets and presumably Microsoft.VisualBasic.targets here -->
+ <PropertyGroup Condition="'$(TargetFrameworks)' != '' and '$(TargetFramework)' == ''">
+ <IsCrossTargetingBuild>true</IsCrossTargetingBuild>
+ </PropertyGroup>
+
+ <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets"
+ Condition="'$(IsCrossTargetingBuild)' == 'true'"/>
+ <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.BeforeCommon.targets"
+ Condition="'$(IsCrossTargetingBuild)' != 'true'"/>
+
+ <PropertyGroup Condition="'$(LanguageTargets)' == ''">
+ <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.csproj'">$(MSBuildToolsPath)\Microsoft.CSharp.targets</LanguageTargets>
+ <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(MSBuildToolsPath)\Microsoft.VisualBasic.targets</LanguageTargets>
+ <LanguageTargets Condition="'$(MSBuildProjectExtension)' == '.fsproj'">$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.FSharpTargetsShim.targets</LanguageTargets>
+
+ <!-- If LanguageTargets isn't otherwise set, then just import the common targets. This should allow the restore target to run,
+ which could bring in NuGet packages that set the LanguageTargets to something else. This means support for different
+ languages could either be supplied via an SDK or via a NuGet package. -->
+ <LanguageTargets Condition="'$(LanguageTargets)' == ''">$(MSBuildToolsPath)\Microsoft.Common.targets</LanguageTargets>
+ </PropertyGroup>
+
+ <!-- REMARK: Dont remove/rename, the LanguageTargets property is used by F# to hook inside the project's sdk
+ using Sdk attribute (from .NET Core Sdk 1.0.0-preview4) -->
+ <Import Project="$(LanguageTargets)"/>
+
+ <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.CrossTargeting.targets"
+ Condition="'$(IsCrossTargetingBuild)' == 'true'"/>
+ <Import Project="$(MSBuildThisFileDirectory)..\targets\Microsoft.NET.Sdk.targets"
+ Condition="'$(IsCrossTargetingBuild)' != 'true'"/>
+
+ <!-- Import targets from NuGet.Build.Tasks.Pack package/Sdk -->
+ <PropertyGroup Condition="'$(NuGetBuildTasksPackTargets)' == '' AND '$(ImportNuGetBuildTasksPackTargetsFromSdk)' != 'false'">
+ <NuGetBuildTasksPackTargets Condition="'$(IsCrossTargetingBuild)' == 'true'">$(MSBuildThisFileDirectory)..\..\NuGet.Build.Tasks.Pack\buildCrossTargeting\NuGet.Build.Tasks.Pack.targets</NuGetBuildTasksPackTargets>
+ <NuGetBuildTasksPackTargets Condition="'$(IsCrossTargetingBuild)' != 'true'">$(MSBuildThisFileDirectory)..\..\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets</NuGetBuildTasksPackTargets>
+ <ImportNuGetBuildTasksPackTargetsFromSdk>true</ImportNuGetBuildTasksPackTargetsFromSdk>
+ </PropertyGroup>
+
+ <Import Project="$(NuGetBuildTasksPackTargets)"
+ Condition="Exists('$(NuGetBuildTasksPackTargets)') AND '$(ImportNuGetBuildTasksPackTargetsFromSdk)' == 'true'"/>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/GenerateDeps/GenerateDeps.proj b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/GenerateDeps/GenerateDeps.proj
new file mode 100644
index 0000000000..6acbdbfe06
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/GenerateDeps/GenerateDeps.proj
@@ -0,0 +1,63 @@
+<Project DefaultTargets="BuildDepsJson">
+ <!--
+***********************************************************************************************
+GenerateDeps.proj
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+ <!--
+ This project is built by the .NET CLI in order to create .deps.json files for .NET CLI tools.
+ Properties to be passed in by the .NET CLI:
+ - ProjectAssetsFile: Full path to the project.assets.json file for the tool under the NuGet .tools folder
+ - ToolName: The simple name of the tool DLL, for example, "dotnet-mytool"
+ - AdditionalImport: The full path to the .props file from the platform package which will be imported, which
+ should include the PackageConflictPlatformManifests file.
+ This is a workaround until NuGet can generate .props and .targets files for imports from packages referenced
+ by tools, which is tracked by https://github.com/NuGet/Home/issues/5037.
+ -->
+
+ <PropertyGroup>
+ <ImportDirectoryBuildProps>false</ImportDirectoryBuildProps>
+ <ImportDirectoryBuildTargets>false</ImportDirectoryBuildTargets>
+ </PropertyGroup>
+
+ <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" />
+
+ <Import Project="$(AdditionalImport)"
+ Condition=" '$(AdditionalImport)' != '' And Exists($(AdditionalImport))" />
+
+ <PropertyGroup>
+ <ToolFolder>$([System.IO.Path]::GetDirectoryName($(ProjectAssetsFile)))</ToolFolder>
+ <ProjectDepsFilePath Condition="'$(ProjectDepsFilePath)' == ''">$(ToolFolder)\$(ToolName).deps.json</ProjectDepsFilePath>
+ <OutputType>Exe</OutputType>
+ <IncludeMainProjectInDepsFile>false</IncludeMainProjectInDepsFile>
+
+ <!-- This project must not write to intermediate directory as it is inside the SDK directory and not in a user path. -->
+ <DisablePackageAssetsCache>true</DisablePackageAssetsCache>
+ <DisableRarCache>true</DisableRarCache>
+
+ <!-- The tool asets file is restored as a separate graph and doesn't get an implicit reference to Microsoft.NETCore.App. So
+ the version of that package will be determined by the version the tool package references. However, when building
+ GenerateDeps.proj, the CLI sets the TargetFramework to match the target it finds in the assets file, which is
+ based on what the project with the DotNetCliToolReference was targeting, not what the tool itself was targeting.
+
+ So we need to disable the logic which checks that the version of Microsoft.NETCore.App from the assets file
+ matches the one that would be resolved based on the TargetFramework that was passed in. -->
+ <VerifyMatchingImplicitPackageVersion>false</VerifyMatchingImplicitPackageVersion>
+ </PropertyGroup>
+
+ <Target Name="BuildDepsJson" DependsOnTargets="$(ResolvePackageDependenciesForBuildDependsOn);GenerateBuildDependencyFile" />
+
+ <Target Name="DontRestore" BeforeTargets="Restore">
+ <Error Text="This project should not be restored" />
+ </Target>
+
+ <Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ComposeStore.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ComposeStore.targets
new file mode 100644
index 0000000000..1dd7133817
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ComposeStore.targets
@@ -0,0 +1,453 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.ComposeStore.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ ============================================================
+ ComposeStore
+
+ The main store entry point.
+ ============================================================
+ -->
+ <Target Name="ComposeStore"
+ DependsOnTargets="PrepareForComposeStore;
+ PrepOptimizer;
+ StoreWorkerMain;
+ _CopyResolvedUnOptimizedFiles;
+ StoreFinalizer;"/>
+
+ <!--
+ ============================================================
+ StoreWorkerMain
+
+ Processes the store project files
+ ============================================================
+ -->
+
+ <Target Name="StoreWorkerMain">
+
+ <ItemGroup>
+ <_AllProjects Include="$(AdditionalProjects.Split('%3B'))"/>
+ <_AllProjects Include ="$(MSBuildProjectFullPath)"/>
+ </ItemGroup>
+
+ <MSBuild Projects="%(_AllProjects.Identity)"
+ Targets="StoreWorkerMapper"
+ BuildinParallel="$(BuildinParallel)"
+ Properties="ComposeWorkingDir=$(ComposeWorkingDir);
+ PublishDir=$(PublishDir);
+ StoreStagingDir=$(StoreStagingDir);
+ TargetFramework=$(_TFM);
+ JitPath=$(JitPath);
+ Crossgen=$(Crossgen);
+ DisableImplicitFrameworkReferences=true;
+ SkipUnchangedFiles=$(SkipUnchangedFiles);
+ PreserveStoreLayout=$(PreserveStoreLayout);
+ CreateProfilingSymbols=$(CreateProfilingSymbols);
+ StoreSymbolsStagingDir=$(StoreSymbolsStagingDir)">
+ <Output ItemName="AllResolvedPackagesPublished" TaskParameter="TargetOutputs" />
+ </MSBuild>
+ </Target>
+ <!--
+ ============================================================
+ StoreWorkerMapper
+
+ Processes each package specified in a store project file
+ ============================================================
+ -->
+
+ <Target Name="StoreWorkerMapper"
+ Returns ="@(ResolvedPackagesFromMapper)">
+
+ <ItemGroup>
+ <PackageReferencesToStore Include="$(MSBuildProjectFullPath)">
+ <PackageName>%(PackageReference.Identity)</PackageName>
+ <PackageVersion>%(PackageReference.Version)</PackageVersion>
+ <AdditionalProperties>
+ StorePackageName=%(PackageReference.Identity);
+ StorePackageVersion=%(PackageReference.Version);
+ ComposeWorkingDir=$(ComposeWorkingDir);
+ PublishDir=$(PublishDir);
+ StoreStagingDir=$(StoreStagingDir);
+ TargetFramework=$(TargetFramework);
+ RuntimeIdentifier=$(RuntimeIdentifier);
+ JitPath=$(JitPath);
+ Crossgen=$(Crossgen);
+ SkipUnchangedFiles=$(SkipUnchangedFiles);
+ PreserveStoreLayout=$(PreserveStoreLayout);
+ CreateProfilingSymbols=$(CreateProfilingSymbols);
+ StoreSymbolsStagingDir=$(StoreSymbolsStagingDir);
+ DisableImplicitFrameworkReferences=false;
+ </AdditionalProperties>
+ </PackageReferencesToStore>
+ </ItemGroup>
+
+<!-- Restore phase -->
+ <MSBuild Projects="@(PackageReferencesToStore)"
+ Targets="RestoreForComposeStore"
+ BuildInParallel="$(BuildInParallel)">
+ </MSBuild>
+
+
+<!-- Resolve phase-->
+ <MSBuild Projects="@(PackageReferencesToStore)"
+ Targets="StoreResolver"
+ Properties="SelfContained=false;UseAppHost=false;MSBuildProjectExtensionsPath=$(ComposeWorkingDir)\%(PackageReferencesToStore.PackageName)_$([System.String]::Copy('%(PackageReferencesToStore.PackageVersion)').Replace('*','-'))\;"
+ BuildInParallel="$(BuildInParallel)">
+ <Output ItemName="ResolvedPackagesFromMapper" TaskParameter="TargetOutputs" />
+ </MSBuild>
+ </Target>
+
+ <Target Name="StoreResolver"
+ Returns="@(ResolvedPackagesPublished)"
+ DependsOnTargets="PrepforRestoreForComposeStore;
+ StoreWorkerPerformWork"/>
+
+ <Target Name="StoreWorkerPerformWork"
+ DependsOnTargets="ComputeAndCopyFilesToStoreDirectory;"
+ Condition="Exists($(StoreWorkerWorkingDir))" />
+
+<!--
+ ============================================================
+ StoreFinalizer
+
+ Cleans up and produces artifacts after completion of store
+ ============================================================
+ -->
+ <UsingTask TaskName="RemoveDuplicatePackageReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="StoreFinalizer"
+ DependsOnTargets="StoreWorkerMain;
+ _CopyResolvedOptimizedFiles">
+
+ <RemoveDuplicatePackageReferences
+ InputPackageReferences="@(AllResolvedPackagesPublished)">
+ <Output TaskParameter="UniquePackageReferences" ItemName="AllResolvedPackagesPublishedAfterFilter"/>
+ </RemoveDuplicatePackageReferences>
+
+ <ItemGroup>
+ <ListOfPackageReference Include="@(AllResolvedPackagesPublishedAfterFilter -> '%20%20&lt;Package Id=&quot;%(Identity)&quot; Version=&quot;%(Version)&quot; /&gt;')"/>
+ </ItemGroup>
+ <PropertyGroup>
+ <_StoreArtifactContent>
+ <![CDATA[
+<StoreArtifacts>
+@(ListOfPackageReference)
+</StoreArtifacts>
+]]>
+ </_StoreArtifactContent>
+ </PropertyGroup>
+ <WriteLinesToFile
+ File="$(StoreArtifactXml)"
+ Lines="$(_StoreArtifactContent)"
+ Overwrite="true" />
+
+ <Message Text="Files were composed in $(PublishDir)"
+ Importance="high"/>
+ <Message Text="The list of packages stored is in $(StoreArtifactXml) "
+ Importance="high"/>
+ <RemoveDir
+ Condition="'$(PreserveComposeWorkingDir)' != 'true'"
+ Directories="$(ComposeWorkingDir)" />
+ </Target>
+
+ <!--
+ ============================================================
+ _CopyResolvedUnOptimizedFiles
+
+ Copy OptimizedResolvedFileToPublish items to the publish directory.
+ ============================================================
+ -->
+
+ <Target Name="_CopyResolvedOptimizedFiles"
+ DependsOnTargets="StoreWorkerMain;">
+ <ItemGroup>
+ <_OptimizedResolvedFileToPublish Include="$(StoreStagingDir)\**\*.*" />
+ <_OptimizedSymbolFileToPublish Include="$(StoreSymbolsStagingDir)\**\*.*" />
+ </ItemGroup>
+
+ <Copy SourceFiles = "@(_OptimizedResolvedFileToPublish)"
+ DestinationFolder="$(PublishDir)%(_OptimizedResolvedFileToPublish.RecursiveDir)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ Condition ="'@(_OptimizedResolvedFileToPublish)' != ''"
+ SkipUnchangedFiles="$(SkipUnchangedFiles)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+
+ </Copy>
+
+ <Copy SourceFiles="@(_OptimizedSymbolFileToPublish)"
+ DestinationFolder="$(ProfilingSymbolsDir)%(_OptimizedSymbolFileToPublish.RecursiveDir)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ Condition="'@(_OptimizedSymbolFileToPublish)' != ''"
+ SkipUnchangedFiles="$(SkipUnchangedFiles)">
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+ </Target>
+
+ <!--
+ ============================================================
+ PrepareForComposeStore
+
+ Prepare the prerequisites for ComposeStore.
+ ============================================================
+ -->
+
+ <Target Name="PrepareForComposeStore">
+
+ <PropertyGroup>
+ <PreserveStoreLayout Condition="'$(PreserveStoreLayout)' == ''">true</PreserveStoreLayout>
+ <SkipOptimization Condition="'$(RuntimeIdentifier)' == ''">true</SkipOptimization>
+ <_TFM Condition="'$(_TFM)' == ''">$(TargetFramework)</_TFM>
+ <SkipUnchangedFiles Condition="'$(SkipUnchangedFiles)' == ''">true</SkipUnchangedFiles>
+ </PropertyGroup>
+
+ <NETSdkError Condition="'2.0' > '$(_TargetFrameworkVersionWithoutV)'"
+ ResourceName="UnuspportedFramework"
+ FormatArguments="$(TargetFrameworkMoniker)"/>
+
+ <NETSdkError Condition="'$(RuntimeIdentifier)' =='' and '$(_PureManagedAssets)' == ''"
+ ResourceName="RuntimeIdentifierWasNotSpecified"/>
+
+ <NETSdkError Condition="'$(_TFM)' ==''"
+ ResourceName="AtLeastOneTargetFrameworkMustBeSpecified"/>
+
+ <PropertyGroup>
+ <DefaultComposeDir>$(UserProfileRuntimeStorePath)</DefaultComposeDir>
+
+ <_ProfilingSymbolsDirectoryName>symbols</_ProfilingSymbolsDirectoryName>
+ <DefaultProfilingSymbolsDir>$([System.IO.Path]::Combine($(DefaultComposeDir), $(_ProfilingSymbolsDirectoryName)))</DefaultProfilingSymbolsDir>
+ <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' == '' and '$(ComposeDir)' != ''">$([System.IO.Path]::Combine($(ComposeDir), $(_ProfilingSymbolsDirectoryName)))</ProfilingSymbolsDir>
+ <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' != '' and '$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ProfilingSymbolsDir), $(PlatformTarget)))</ProfilingSymbolsDir>
+ <ProfilingSymbolsDir Condition="'$(ProfilingSymbolsDir)' == ''">$(DefaultProfilingSymbolsDir)</ProfilingSymbolsDir>
+ <ProfilingSymbolsDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ProfilingSymbolsDir), $(_TFM)))</ProfilingSymbolsDir>
+ <ProfilingSymbolsDir Condition="!HasTrailingSlash('$(ProfilingSymbolsDir)')">$(ProfilingSymbolsDir)\</ProfilingSymbolsDir>
+
+ <ComposeDir Condition="'$(ComposeDir)' == ''">$(DefaultComposeDir)</ComposeDir>
+ <ComposeDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ComposeDir), $(PlatformTarget)))</ComposeDir>
+ <ComposeDir Condition="'$(DoNotDecorateComposeDir)' != 'true'">$([System.IO.Path]::Combine($(ComposeDir), $(_TFM)))</ComposeDir>
+ <StoreArtifactXml>$([System.IO.Path]::Combine($(ComposeDir),"artifact.xml"))</StoreArtifactXml>
+ <PublishDir>$([System.IO.Path]::GetFullPath($(ComposeDir)))</PublishDir>
+ <_RandomFileName>$([System.IO.Path]::GetRandomFileName())</_RandomFileName>
+ <TEMP Condition="'$(TEMP)' == ''">$([System.IO.Path]::GetTempPath())</TEMP>
+ <ComposeWorkingDir Condition="'$(ComposeWorkingDir)' == ''">$([System.IO.Path]::Combine($(TEMP), $(_RandomFileName)))</ComposeWorkingDir>
+ <ComposeWorkingDir>$([System.IO.Path]::GetFullPath($(ComposeWorkingDir)))</ComposeWorkingDir>
+ <StoreStagingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"StagingDir"))</StoreStagingDir> <!-- Will contain optimized managed assemblies in nuget cache layout -->
+ <StoreSymbolsStagingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"SymbolsStagingDir"))</StoreSymbolsStagingDir>
+ <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated -->
+ <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(CreateProfilingSymbols)' == ''">
+ <!-- There is no support for profiling symbols on OSX -->
+ <CreateProfilingSymbols Condition="$(RuntimeIdentifier.StartsWith('osx'))">false</CreateProfilingSymbols>
+ <CreateProfilingSymbols Condition="'$(CreateProfilingSymbols)' == ''">true</CreateProfilingSymbols>
+ </PropertyGroup>
+
+ <NETSdkError Condition="Exists($(ComposeWorkingDir))"
+ ResourceName="FolderAlreadyExists"
+ FormatArguments="$(ComposeWorkingDir)" />
+
+ <MakeDir Directories="$(PublishDir)" />
+ <MakeDir Directories="$(StoreStagingDir)"/>
+
+ </Target>
+
+ <Target Name="PrepforRestoreForComposeStore"
+ DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary">
+
+ <PropertyGroup>
+ <StorePackageVersionForFolderName>$(StorePackageVersion.Replace('*','-'))</StorePackageVersionForFolderName>
+ <StoreWorkerWorkingDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"$(StorePackageName)_$(StorePackageVersionForFolderName)"))</StoreWorkerWorkingDir>
+ <_PackageProjFile>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "Restore.csproj"))</_PackageProjFile>
+ <BaseIntermediateOutputPath>$(StoreWorkerWorkingDir)\</BaseIntermediateOutputPath>
+ <ProjectAssetsFile>$(BaseIntermediateOutputPath)\project.assets.json</ProjectAssetsFile>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <PackagesToPrune>$(MicrosoftNETPlatformLibrary)</PackagesToPrune>
+ <SelfContained Condition="'$(SelfContained)' == ''">true</SelfContained>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ RestoreForComposeStore
+
+ Restores the package
+ ============================================================
+ -->
+
+ <Target Name="RestoreForComposeStore"
+ DependsOnTargets="PrepforRestoreForComposeStore;"
+ Condition="!Exists($(StoreWorkerWorkingDir))">
+
+ <MakeDir Directories="$(StoreWorkerWorkingDir)" />
+
+ <MSBuild Projects="$(MSBuildProjectFullPath)"
+ Targets="Restore"
+ Properties="RestoreGraphProjectInput=$(MSBuildProjectFullPath);
+ RestoreOutputPath=$(BaseIntermediateOutputPath);
+ StorePackageName=$(StorePackageName);
+ StorePackageVersion=$(StorePackageVersion);
+ RuntimeIdentifier=$(RuntimeIdentifier);
+ TargetFramework=$(TargetFramework);"/>
+ </Target>
+
+ <!--
+ ============================================================
+ ComputeAndCopyFilesToStoreDirectory
+
+ Computes the list of all files to copy to the publish directory and then publishes them.
+ ============================================================
+ -->
+
+ <Target Name="ComputeAndCopyFilesToStoreDirectory"
+ DependsOnTargets="ComputeFilesToStore;
+ CopyFilesToStoreDirectory" />
+
+ <!--
+ ============================================================
+ CopyFilesToStoreDirectory
+
+ Copy all build outputs, satellites and other necessary files to the publish directory.
+ ============================================================
+ -->
+
+ <Target Name="CopyFilesToStoreDirectory"
+ DependsOnTargets="_CopyResolvedUnOptimizedFiles"/>
+
+
+ <!--
+ ============================================================
+ _CopyResolvedUnOptimizedFiles
+
+ Copy _UnOptimizedResolvedFileToPublish items to the publish directory.
+ ============================================================
+ -->
+
+ <Target Name="_CopyResolvedUnOptimizedFiles"
+ DependsOnTargets="_ComputeResolvedFilesToStoreTypes;
+ _RunOptimizer">
+
+ <Copy SourceFiles = "@(_UnOptimizedResolvedFileToPublish)"
+ DestinationFiles="$(PublishDir)%(_UnOptimizedResolvedFileToPublish.DestinationSubPath)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ SkipUnchangedFiles="$(SkipUnchangedFiles)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+
+ </Copy>
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeResolvedFilesToStoreTypes
+ ============================================================
+ -->
+
+ <Target Name="_ComputeResolvedFilesToStoreTypes"
+ DependsOnTargets="_GetResolvedFilesToStore;_SplitResolvedFiles;" />
+
+ <!--
+ ============================================================
+ _SplitResolvedFiles
+
+ Splits ResolvedFileToPublish items into 'managed' and 'unmanaged' buckets.
+ ============================================================
+ -->
+
+ <Target Name="_SplitResolvedFiles"
+ Condition="$(SkipOptimization) !='true' "
+ DependsOnTargets="_GetResolvedFilesToStore">
+ <ItemGroup>
+ <_ManagedResolvedFileToPublishCandidates Include="@(ResolvedFileToPublish)"
+ Condition="'%(ResolvedFileToPublish.AssetType)'=='runtime'" />
+
+ <_UnOptimizedResolvedFileToPublish Include="@(ResolvedFileToPublish)"
+ Condition="'%(ResolvedFileToPublish.AssetType)'!='runtime'" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <SkipOptimization Condition="'@(_ManagedResolvedFileToPublishCandidates)'==''">true</SkipOptimization>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _GetResolvedFilesToStore
+ ============================================================
+ -->
+
+ <Target Name="_GetResolvedFilesToStore"
+ Condition="$(SkipOptimization) == 'true' ">
+ <ItemGroup>
+ <_UnOptimizedResolvedFileToPublish Include="@(ResolvedFileToPublish)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ ComputeFilesToStore
+
+ Gathers all the files that need to be copied to the publish directory.
+ ============================================================
+ -->
+ <UsingTask TaskName="FilterResolvedFiles" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="ComputeFilesToStore"
+ DependsOnTargets="_ComputeResolvedCopyLocalPublishAssets;
+ _ComputeCopyToPublishDirectoryItems">
+
+ <PropertyGroup>
+ <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory>
+ <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory>
+ </PropertyGroup>
+
+ <FilterResolvedFiles AssetsFilePath="$(ProjectAssetsFile)"
+ ResolvedFiles ="@(_ResolvedCopyLocalPublishAssets)"
+ PackagesToPrune="$(PackagesToPrune)"
+ TargetFramework="$(TargetFrameworkMoniker)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ IsSelfContained="$(SelfContained)" >
+ <Output TaskParameter="AssembliesToPublish" ItemName="ResolvedFileToPublish" />
+ <Output TaskParameter="PublishedPackages" ItemName="PackagesThatWereResolved" />
+ </FilterResolvedFiles>
+
+ <ItemGroup>
+ <ResolvedPackagesPublished Include="@(PackagesThatWereResolved)"
+ Condition="$(DoNotTrackPackageAsResolved) !='true'"/>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ PrepRestoreForStoreProjects
+
+ Removes specified PackageReference for store and inserts the specified StorePackageName
+ ============================================================
+ -->
+ <Target Name="PrepRestoreForStoreProjects"
+ BeforeTargets="_GenerateProjectRestoreGraphPerFramework;"
+ Condition="'$(StorePackageName)' != ''" >
+
+ <ItemGroup>
+ <PackageReference Remove="@(PackageReference)" Condition="'%(PackageReference.IsImplicitlyDefined)' != 'true'"/>
+ <PackageReference Include="$(StorePackageName)" Version="$(StorePackageVersion)"/>
+ </ItemGroup>
+ </Target>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ConflictResolution.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ConflictResolution.targets
new file mode 100644
index 0000000000..9bcb1aef4c
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ConflictResolution.targets
@@ -0,0 +1,92 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.ConflictResolution.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Import Project="Microsoft.NET.DefaultPackageConflictOverrides.targets" />
+
+ <UsingTask TaskName="ResolvePackageFileConflicts" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ _HandlePackageFileConflicts
+ Handles package file conflict resolution for build.
+ This will differ from the conflict resolution at publish time if the publish assets differ from build.
+ -->
+ <Target Name="_HandlePackageFileConflicts" DependsOnTargets="GetFrameworkPaths;GetReferenceAssemblyPaths;ResolveTargetingPackAssets">
+
+ <ItemGroup>
+ <!--
+ All runtime assets for conflict resolution.
+ Exclude the copy-local items since those are passed in separately.
+ -->
+ <_RuntimeAssetsForConflictResolution
+ Include="@(RuntimeCopyLocalItems);
+ @(NativeCopyLocalItems);
+ @(ResourceCopyLocalItems);
+ @(RuntimeTargetsCopyLocalItems)"
+ Exclude="@(ReferenceCopyLocalPaths)" />
+ </ItemGroup>
+
+ <ResolvePackageFileConflicts References="@(Reference)"
+ ReferenceCopyLocalPaths="@(ReferenceCopyLocalPaths)"
+ OtherRuntimeItems="@(_RuntimeAssetsForConflictResolution)"
+ PlatformManifests="@(PackageConflictPlatformManifests)"
+ TargetFrameworkDirectories="$(TargetFrameworkDirectory)"
+ PackageOverrides="@(PackageConflictOverrides)"
+ PreferredPackages="$(PackageConflictPreferredPackages)">
+ <Output TaskParameter="ReferencesWithoutConflicts" ItemName="_ReferencesWithoutConflicts" />
+ <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ReferenceCopyLocalPathsWithoutConflicts" />
+ <Output TaskParameter="Conflicts" ItemName="_ConflictPackageFiles" />
+ </ResolvePackageFileConflicts>
+
+ <!-- Replace Reference / ReferenceCopyLocalPaths with the filtered lists.
+ We must remove all and include rather than just remove since removal is based
+ only on ItemSpec and duplicate ItemSpecs may exist with different metadata
+ (eg: HintPath) -->
+ <ItemGroup>
+ <Reference Remove="@(Reference)" />
+ <Reference Include="@(_ReferencesWithoutConflicts)" />
+ <ReferenceCopyLocalPaths Remove="@(ReferenceCopyLocalPaths)" />
+ <ReferenceCopyLocalPaths Include="@(_ReferenceCopyLocalPathsWithoutConflicts)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ _HandlePackageFileConflictsForPublish
+ Handles package file conflict resolution for publish.
+ Currently, publish assets may differ due to the following reasons:
+ * A package was marked as excluded from publishing (including PrivateAssets="all").
+ * There are runtime store packages to publish against.
+ * If we're preserving store layout, which alters the destination paths of files.
+ When none of these things are true, then we can rely on the conflict resolution from build.
+ -->
+ <Target Name="_HandlePackageFileConflictsForPublish"
+ AfterTargets="_ResolveCopyLocalAssetsForPublish;
+ _FilterSatelliteResourcesForPublish">
+
+ <ResolvePackageFileConflicts ReferenceCopyLocalPaths="@(_ResolvedCopyLocalPublishAssets)"
+ PlatformManifests="@(PackageConflictPlatformManifests)"
+ TargetFrameworkDirectories="$(TargetFrameworkDirectory)"
+ PreferredPackages="$(PackageConflictPreferredPackages)">
+ <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ResolvedCopyLocalPublishAssetsWithoutConflicts" />
+ <Output TaskParameter="Conflicts" ItemName="_PublishConflictPackageFiles" />
+ </ResolvePackageFileConflicts>
+
+ <ItemGroup>
+ <_ResolvedCopyLocalPublishAssets Remove="@(_ResolvedCopyLocalPublishAssets)" />
+ <_ResolvedCopyLocalPublishAssets Include="@(_ResolvedCopyLocalPublishAssetsWithoutConflicts)" />
+ </ItemGroup>
+
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.CrossGen.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.CrossGen.targets
new file mode 100644
index 0000000000..fdc73e3e89
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.CrossGen.targets
@@ -0,0 +1,317 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.CrossGen.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ ============================================================
+ PrepOptimizer
+
+ Sets up the common infrastructure for the optimization phase
+ Outputs:
+ JitPath
+ Crossgen
+ ============================================================
+ -->
+
+ <Target Name="PrepOptimizer"
+ DependsOnTargets="_RestoreCrossgen;"
+ Condition="$(SkipOptimization) != 'true' ">
+ <!-- Get the coreclr path -->
+ <ItemGroup>
+ <_CoreclrResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)"
+ Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='coreclr'" />
+ <_CoreclrResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)"
+ Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='libcoreclr'" />
+ <_JitResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)"
+ Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='clrjit'" />
+ <_JitResolvedPath Include="@(CrossgenResolvedAssembliesToPublish)"
+ Condition="'%(CrossgenResolvedAssembliesToPublish.Filename)'=='libclrjit'" />
+ </ItemGroup>
+
+ <NETSdkError Condition="'@(_CoreclrResolvedPath->Count())' &gt; 1"
+ ResourceName="MultipleFilesResolved"
+ FormatArguments="coreclr" />
+
+ <NETSdkError Condition="'@(_CoreclrResolvedPath)'== ''"
+ ResourceName="UnableToFindResolvedPath"
+ FormatArguments="coreclr" />
+
+ <NETSdkError Condition="'@(_JitResolvedPath->Count())' &gt; 1"
+ ResourceName="MultipleFilesResolved"
+ FormatArguments="jit" />
+
+ <NETSdkError Condition="'@(_JitResolvedPath)'== ''"
+ ResourceName="UnableToFindResolvedPath"
+ FormatArguments="jit" />
+
+ <!-- Get the crossgen and jit path-->
+ <PropertyGroup>
+ <_CoreclrPath>@(_CoreclrResolvedPath)</_CoreclrPath>
+ <JitPath>@(_JitResolvedPath)</JitPath>
+ <_CoreclrDir>$([System.IO.Path]::GetDirectoryName($(_CoreclrPath)))</_CoreclrDir>
+ <_CoreclrPkgDir>$([System.IO.Path]::Combine($(_CoreclrDir),"..\..\..\"))</_CoreclrPkgDir>
+ <CrossgenDir>$([System.IO.Path]::Combine($(_CoreclrPkgDir),"tools"))</CrossgenDir>
+ <!-- TODO override with rid specific tools path for x-arch -->
+ <Crossgen>$([System.IO.Path]::Combine($(CrossgenDir),"crossgen"))</Crossgen>
+ <Crossgen Condition="'$(OS)' == 'Windows_NT'">$([System.IO.Path]::Combine($(CrossgenDir),"crossgen.exe"))</Crossgen>
+ </PropertyGroup>
+
+ <NETSdkError Condition="!Exists($(Crossgen))"
+ ResourceName="UnableToFindResolvedPath"
+ FormatArguments="$(Crossgen)" />
+
+ <!-- Copy crossgen into the netcoreapp folder to ensure it can load Microsoft.DiaSymReader.Native when creating PDBs -->
+ <Copy SourceFiles="$(Crossgen)"
+ DestinationFolder="$(_NetCoreRefDir)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+
+ <PropertyGroup>
+ <Crossgen>$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine($(_NetCoreRefDir), $([System.IO.Path]::GetFileName($(Crossgen)))))))</Crossgen>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _RunOptimizer
+
+ Start the optimization phase
+ ============================================================
+ -->
+
+ <Target Name="_RunOptimizer"
+ DependsOnTargets="_InitializeBasicProps;
+ _ComputeResolvedFilesToStoreTypes;
+ _SetupStageForCrossgen"
+ Condition="$(SkipOptimization) != 'true' ">
+ <ItemGroup>
+ <AssembliestoCrossgen Include="$(MSBuildProjectFullPath)">
+ <Properties>
+ CrossgenExe=$(Crossgen);
+ CrossgenJit=$(JitPath);
+ CrossgenInputAssembly=%(_ManagedResolvedFilesToOptimize.Fullpath);
+ CrossgenOutputAssembly=$(_RuntimeOptimizedDir)$(DirectorySeparatorChar)%(_ManagedResolvedFilesToOptimize.FileName)%(_ManagedResolvedFilesToOptimize.Extension);
+ CrossgenSubOutputPath=%(_ManagedResolvedFilesToOptimize.DestinationSubPath);
+ _RuntimeOptimizedDir=$(_RuntimeOptimizedDir);
+ PublishDir=$(StoreStagingDir);
+ CrossgenPlatformAssembliesPath=$(_RuntimeRefDir)$(PathSeparator)$(_NetCoreRefDir);
+ CreateProfilingSymbols=$(CreateProfilingSymbols);
+ StoreSymbolsStagingDir=$(StoreSymbolsStagingDir);
+ _RuntimeSymbolsDir=$(_RuntimeSymbolsDir)
+ </Properties>
+ </AssembliestoCrossgen>
+ </ItemGroup>
+
+ <!-- CrossGen the assemblies -->
+ <MSBuild Projects="@(AssembliestoCrossgen)"
+ Targets="RunCrossGen"
+ BuildInParallel="$(BuildInParallel)"
+ Condition="'@(_ManagedResolvedFilesToOptimize)' != ''"/>
+
+ </Target>
+
+ <!--
+ ============================================================
+ RunCrossGen
+ Target Encapsulating the crossgen command
+ ============================================================
+ -->
+
+ <Target Name="RunCrossGen"
+ DependsOnTargets="_InitializeBasicProps;">
+
+ <PropertyGroup>
+ <CrossgenProfilingSymbolsOutputDirectory>$([System.IO.Path]::GetDirectoryName($(_RuntimeSymbolsDir)\$(CrossgenSubOutputPath)))</CrossgenProfilingSymbolsOutputDirectory>
+ <CrossgenSymbolsStagingDirectory>$([System.IO.Path]::GetDirectoryName($(StoreSymbolsStagingDir)\$(CrossgenSubOutputPath)))</CrossgenSymbolsStagingDirectory>
+ <CrossgenCommandline>$(CrossgenExe) -nologo -readytorun -in "$(CrossgenInputAssembly)" -out "$(CrossgenOutputAssembly)" -jitpath "$(CrossgenJit)" -platform_assemblies_paths "$(CrossgenPlatformAssembliesPath)"</CrossgenCommandline>
+ <CreateProfilingSymbolsOptionName Condition="'$(OS)' == 'Windows_NT'">CreatePDB</CreateProfilingSymbolsOptionName>
+ <CreateProfilingSymbolsOptionName Condition="'$(CreateProfilingSymbolsOptionName)' == ''">CreatePerfMap</CreateProfilingSymbolsOptionName>
+ </PropertyGroup>
+
+ <Message Text="CrossgenCommandline: $(CrossgenCommandline)"/>
+
+ <!--Optimization skip if the assembly is already present in the final output directory-->
+ <Exec
+ Command="$(CrossgenCommandline)"
+ Condition="!Exists($([System.IO.Path]::Combine($(PublishDir),$(CrossgenSubOutputPath))))"
+ IgnoreStandardErrorWarningFormat="true" />
+
+ <Copy SourceFiles = "$(CrossgenOutputAssembly)"
+ DestinationFiles="$(PublishDir)\$(CrossgenSubOutputPath)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ Condition="!Exists($([System.IO.Path]::Combine($(PublishDir),$(CrossgenSubOutputPath))))">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+
+ <!-- Create profiling symbols if requested -->
+ <MakeDir Directories="$(CrossgenProfilingSymbolsOutputDirectory)"
+ Condition="'$(CreateProfilingSymbols)' == 'true' and Exists($(CrossgenOutputAssembly))" />
+ <Exec Command="$(CrossgenExe) -nologo -readytorun -platform_assemblies_paths $(CrossgenPlatformAssembliesPath) -$(CreateProfilingSymbolsOptionName) $(CrossgenProfilingSymbolsOutputDirectory) $(CrossgenOutputAssembly)"
+ Condition="'$(CreateProfilingSymbols)' == 'true' and Exists($(CrossgenOutputAssembly))"
+ IgnoreStandardErrorWarningFormat="true" />
+
+ <ItemGroup>
+ <_ProfilingSymbols Include="$(CrossgenProfilingSymbolsOutputDirectory)\*"
+ Condition="'$(CreateProfilingSymbols)' == 'true'" />
+ </ItemGroup>
+
+ <Copy SourceFiles="@(_ProfilingSymbols)"
+ DestinationFolder="$(CrossgenSymbolsStagingDirectory)"
+ Condition="'$(CreateProfilingSymbols)' == 'true'"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)">
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+ </Target>
+
+ <Target Name="_InitializeBasicProps">
+ <PropertyGroup>
+ <PathSeparator>$([System.IO.Path]::PathSeparator)</PathSeparator>
+ <DirectorySeparatorChar>$([System.IO.Path]::DirectorySeparatorChar)</DirectorySeparatorChar>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _GetCrossgenProps
+ Generates props used by Crossgen
+ ============================================================
+ -->
+
+ <Target Name="_GetCrossgenProps"
+ Condition="$(SkipOptimization) != 'true' ">
+
+ <PropertyGroup>
+ <_CrossProjFileDir>$([System.IO.Path]::Combine($(ComposeWorkingDir),"Optimize"))</_CrossProjFileDir>
+ <_NetCoreRefDir>$([System.IO.Path]::Combine($(_CrossProjFileDir), "netcoreapp"))</_NetCoreRefDir> <!-- flat netcore app assemblies-->
+ </PropertyGroup>
+ <MakeDir Directories="$(_CrossProjFileDir)"/>
+ <PropertyGroup>
+ <_CrossProjAssetsFile>$([System.IO.Path]::Combine($(_CrossProjFileDir), project.assets.json))</_CrossProjAssetsFile>
+ </PropertyGroup>
+
+
+ </Target>
+
+ <!--
+ ============================================================
+ _SetupStageForCrossgen
+ ============================================================
+ -->
+
+ <Target Name="_SetupStageForCrossgen"
+ DependsOnTargets="_GetCrossgenProps;">
+ <PropertyGroup>
+ <_RuntimeRefDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimeref"))</_RuntimeRefDir> <!-- flat app managed assemblies -->
+ <_RuntimeOptimizedDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimopt"))</_RuntimeOptimizedDir> <!-- optimized app managed assemblies in nuget cache layout -->
+ <_RuntimeSymbolsDir>$([System.IO.Path]::Combine($(StoreWorkerWorkingDir), "runtimesymbols"))</_RuntimeSymbolsDir>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <_ManagedResolvedFilesToOptimize Include="@(_ManagedResolvedFileToPublishCandidates)" />
+ </ItemGroup>
+
+ <MakeDir Directories="$(_RuntimeOptimizedDir)"/>
+ <MakeDir Directories="$(_RuntimeSymbolsDir)"
+ Condition="'$(CreateProfilingSymbols)' == 'true'" />
+
+ <!-- Copy managed files to a flat temp directory for passing it as ref -->
+ <Copy SourceFiles = "@(_ManagedResolvedFilesToOptimize)"
+ DestinationFolder="$(_RuntimeRefDir)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _RestoreCrossgen
+ Restores netcoreapp and publishes it to a temp directory
+ ============================================================
+ -->
+
+ <Target Name="_RestoreCrossgen"
+ DependsOnTargets="PrepforRestoreForComposeStore;
+ _SetupStageForCrossgen;
+ ProcessFrameworkReferences;
+ ApplyImplicitVersions;
+ _ComputePackageReferencePublish"
+ Condition="$(SkipOptimization) != 'true' ">
+
+ <ItemGroup>
+ <!-- Filter package references to the one for the platform library, in order to find the right version -->
+ <PackageReferenceForCrossGen Include="@(PackageReference)" Condition="'%(Identity)' == '$(MicrosoftNETPlatformLibrary)'" />
+ </ItemGroup>
+
+ <MSBuild Projects="$(MSBuildProjectFullPath)"
+ Targets="Restore"
+ Properties="RuntimeIdentifiers=$(RuntimeIdentifier);
+ RestoreGraphProjectInput=$(MSBuildProjectFullPath);
+ RestoreOutputPath=$(_CrossProjFileDir);
+ StorePackageName=$(MicrosoftNETPlatformLibrary);
+ StorePackageVersion=%(PackageReferenceForCrossGen.Version);"/>
+
+ <!-- For future: Use ResolvePackageAssets instead of ResolveCopyLocalAssets, delete ResolveCopyLocalAssets task -->
+ <ResolveCopyLocalAssets Condition="'$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'"
+ AssetsFilePath="$(_CrossProjAssetsFile)"
+ TargetFramework="$(_TFM)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ ExcludedPackageReferences="@(_ExcludeFromPublishPackageReference)"
+ IsSelfContained="$(SelfContained)"
+ PreserveStoreLayout="false">
+
+ <Output TaskParameter="ResolvedAssets" ItemName="CrossgenResolvedAssembliesToPublish" />
+ </ResolveCopyLocalAssets>
+
+ <GetPackageDirectory Condition="'$(_TargetFrameworkVersionWithoutV)' >= '3.0'"
+ Items="@(RuntimePack)"
+ AssetsFileWithAdditionalPackageFolders="$(_CrossProjAssetsFile)">
+ <Output TaskParameter="Output" ItemName="_CrossgenRuntimePack" />
+ </GetPackageDirectory>
+
+ <ResolveRuntimePackAssets Condition="'$(_TargetFrameworkVersionWithoutV)' >= '3.0'"
+ FrameworkReferences="@(FrameworkReference)"
+ ResolvedRuntimePacks="@(_CrossgenRuntimePack)">
+ <Output TaskParameter="RuntimePackAssets" ItemName="CrossgenResolvedAssembliesToPublish" />
+ </ResolveRuntimePackAssets>
+
+ <!-- Copy managed files to a flat temp directory for passing it as ref for crossgen -->
+ <Copy SourceFiles = "@(CrossgenResolvedAssembliesToPublish)"
+ DestinationFolder="$(_NetCoreRefDir)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+ </Copy>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultAssemblyInfo.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultAssemblyInfo.targets
new file mode 100644
index 0000000000..e2ea90ae91
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultAssemblyInfo.targets
@@ -0,0 +1,27 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.DefaultAssemblyInfo.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition=" '$(Version)' == '' ">
+ <VersionPrefix Condition=" '$(VersionPrefix)' == '' ">1.0.0</VersionPrefix>
+ <Version Condition=" '$(VersionSuffix)' != '' ">$(VersionPrefix)-$(VersionSuffix)</Version>
+ <Version Condition=" '$(Version)' == '' ">$(VersionPrefix)</Version>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <Authors Condition=" '$(Authors)'=='' ">$(AssemblyName)</Authors>
+ <Company Condition=" '$(Company)'=='' ">$(Authors)</Company>
+ <AssemblyTitle Condition=" '$(AssemblyTitle)' == '' ">$(AssemblyName)</AssemblyTitle>
+ <Product Condition=" '$(Product)' == ''">$(AssemblyName)</Product>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultOutputPaths.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultOutputPaths.targets
new file mode 100644
index 0000000000..157ef0508e
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultOutputPaths.targets
@@ -0,0 +1,49 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.DefaultOutputPaths.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ Apply the same default output paths as Microsoft.Common.targets now since we're running before them,
+ but need to adjust them and/or make decisions in terms of them.
+
+ Also note that common targets only set a default OutputPath if neither configuration nor
+ platform were set by the user. This was used to validate that a valid configuration is passed,
+ assuming the convention maintained by VS that every Configuration|Platform combination had
+ an explicit OutputPath. Since we now want to support leaner project files with less
+ duplication and more automatic defaults, we always set a default OutputPath and can no
+ longer depend on that convention for validation. Getting validation re-enabled with a
+ different mechanism is tracked by https://github.com/dotnet/sdk/issues/350
+ -->
+ <PropertyGroup>
+ <Configuration Condition="'$(Configuration)'==''">Debug</Configuration>
+ <Platform Condition="'$(Platform)'==''">AnyCPU</Platform>
+ <PlatformName Condition="'$(PlatformName)' == ''">$(Platform)</PlatformName>
+
+ <BaseOutputPath Condition="'$(BaseOutputPath)' == ''">bin\</BaseOutputPath>
+ <BaseOutputPath Condition="!HasTrailingSlash('$(BaseOutputPath)')">$(BaseOutputPath)\</BaseOutputPath>
+ <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' == 'AnyCPU'">$(BaseOutputPath)$(Configuration)\</OutputPath>
+ <OutputPath Condition="'$(OutputPath)' == '' and '$(PlatformName)' != 'AnyCPU'">$(BaseOutputPath)$(PlatformName)\$(Configuration)\</OutputPath>
+ <OutputPath Condition="!HasTrailingSlash('$(OutputPath)')">$(OutputPath)\</OutputPath>
+
+ <BaseIntermediateOutputPath Condition="'$(BaseIntermediateOutputPath)' == ''">obj\</BaseIntermediateOutputPath>
+ <BaseIntermediateOutputPath Condition="!HasTrailingSlash('$(BaseIntermediateOutputPath)')">$(BaseIntermediateOutputPath)\</BaseIntermediateOutputPath>
+ <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' == 'AnyCPU' ">$(BaseIntermediateOutputPath)$(Configuration)\</IntermediateOutputPath>
+ <IntermediateOutputPath Condition=" $(IntermediateOutputPath) == '' and '$(PlatformName)' != 'AnyCPU' ">$(BaseIntermediateOutputPath)$(PlatformName)\$(Configuration)\</IntermediateOutputPath>
+ <IntermediateOutputPath Condition="!HasTrailingSlash('$(IntermediateOutputPath)')">$(IntermediateOutputPath)\</IntermediateOutputPath>
+ </PropertyGroup>
+
+ <!-- Set the package output path (for nuget pack target) now, before the TargetFramework is appended -->
+ <PropertyGroup>
+ <PackageOutputPath Condition="'$(PackageOutputPath)' == ''">$(OutputPath)</PackageOutputPath>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultPackageConflictOverrides.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultPackageConflictOverrides.targets
new file mode 100644
index 0000000000..2eb168a993
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DefaultPackageConflictOverrides.targets
@@ -0,0 +1,234 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.DefaultPackageConflictOverrides.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <ItemGroup Condition="'$(DisableDefaultPackageConflictOverrides)' != 'true'">
+ <PackageConflictOverrides Include="Microsoft.NETCore.App"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0')">
+ <OverriddenPackages>
+ Microsoft.CSharp|4.4.0;
+ Microsoft.Win32.Primitives|4.3.0;
+ Microsoft.Win32.Registry|4.4.0;
+ runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple|4.3.0;
+ runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl|4.3.0;
+ System.AppContext|4.3.0;
+ System.Buffers|4.4.0;
+ System.Collections|4.3.0;
+ System.Collections.Concurrent|4.3.0;
+ System.Collections.Immutable|1.4.0;
+ System.Collections.NonGeneric|4.3.0;
+ System.Collections.Specialized|4.3.0;
+ System.ComponentModel|4.3.0;
+ System.ComponentModel.EventBasedAsync|4.3.0;
+ System.ComponentModel.Primitives|4.3.0;
+ System.ComponentModel.TypeConverter|4.3.0;
+ System.Console|4.3.0;
+ System.Data.Common|4.3.0;
+ System.Diagnostics.Contracts|4.3.0;
+ System.Diagnostics.Debug|4.3.0;
+ System.Diagnostics.DiagnosticSource|4.4.0;
+ System.Diagnostics.FileVersionInfo|4.3.0;
+ System.Diagnostics.Process|4.3.0;
+ System.Diagnostics.StackTrace|4.3.0;
+ System.Diagnostics.TextWriterTraceListener|4.3.0;
+ System.Diagnostics.Tools|4.3.0;
+ System.Diagnostics.TraceSource|4.3.0;
+ System.Diagnostics.Tracing|4.3.0;
+ System.Dynamic.Runtime|4.3.0;
+ System.Globalization|4.3.0;
+ System.Globalization.Calendars|4.3.0;
+ System.Globalization.Extensions|4.3.0;
+ System.IO|4.3.0;
+ System.IO.Compression|4.3.0;
+ System.IO.Compression.ZipFile|4.3.0;
+ System.IO.FileSystem|4.3.0;
+ System.IO.FileSystem.AccessControl|4.4.0;
+ System.IO.FileSystem.DriveInfo|4.3.0;
+ System.IO.FileSystem.Primitives|4.3.0;
+ System.IO.FileSystem.Watcher|4.3.0;
+ System.IO.IsolatedStorage|4.3.0;
+ System.IO.MemoryMappedFiles|4.3.0;
+ System.IO.Pipes|4.3.0;
+ System.IO.UnmanagedMemoryStream|4.3.0;
+ System.Linq|4.3.0;
+ System.Linq.Expressions|4.3.0;
+ System.Linq.Queryable|4.3.0;
+ System.Net.Http|4.3.0;
+ System.Net.NameResolution|4.3.0;
+ System.Net.Primitives|4.3.0;
+ System.Net.Requests|4.3.0;
+ System.Net.Security|4.3.0;
+ System.Net.Sockets|4.3.0;
+ System.Net.WebHeaderCollection|4.3.0;
+ System.ObjectModel|4.3.0;
+ System.Private.DataContractSerialization|4.3.0;
+ System.Reflection|4.3.0;
+ System.Reflection.Emit|4.3.0;
+ System.Reflection.Emit.ILGeneration|4.3.0;
+ System.Reflection.Emit.Lightweight|4.3.0;
+ System.Reflection.Extensions|4.3.0;
+ System.Reflection.Metadata|1.5.0;
+ System.Reflection.Primitives|4.3.0;
+ System.Reflection.TypeExtensions|4.3.0;
+ System.Resources.ResourceManager|4.3.0;
+ System.Runtime|4.3.0;
+ System.Runtime.Extensions|4.3.0;
+ System.Runtime.Handles|4.3.0;
+ System.Runtime.InteropServices|4.3.0;
+ System.Runtime.InteropServices.RuntimeInformation|4.3.0;
+ System.Runtime.Loader|4.3.0;
+ System.Runtime.Numerics|4.3.0;
+ System.Runtime.Serialization.Formatters|4.3.0;
+ System.Runtime.Serialization.Json|4.3.0;
+ System.Runtime.Serialization.Primitives|4.3.0;
+ System.Security.AccessControl|4.4.0;
+ System.Security.Claims|4.3.0;
+ System.Security.Cryptography.Algorithms|4.3.0;
+ System.Security.Cryptography.Cng|4.4.0;
+ System.Security.Cryptography.Csp|4.3.0;
+ System.Security.Cryptography.Encoding|4.3.0;
+ System.Security.Cryptography.OpenSsl|4.4.0;
+ System.Security.Cryptography.Primitives|4.3.0;
+ System.Security.Cryptography.X509Certificates|4.3.0;
+ System.Security.Cryptography.Xml|4.4.0;
+ System.Security.Principal|4.3.0;
+ System.Security.Principal.Windows|4.4.0;
+ System.Text.Encoding|4.3.0;
+ System.Text.Encoding.Extensions|4.3.0;
+ System.Text.RegularExpressions|4.3.0;
+ System.Threading|4.3.0;
+ System.Threading.Overlapped|4.3.0;
+ System.Threading.Tasks|4.3.0;
+ System.Threading.Tasks.Extensions|4.3.0;
+ System.Threading.Tasks.Parallel|4.3.0;
+ System.Threading.Thread|4.3.0;
+ System.Threading.ThreadPool|4.3.0;
+ System.Threading.Timer|4.3.0;
+ System.ValueTuple|4.3.0;
+ System.Xml.ReaderWriter|4.3.0;
+ System.Xml.XDocument|4.3.0;
+ System.Xml.XmlDocument|4.3.0;
+ System.Xml.XmlSerializer|4.3.0;
+ System.Xml.XPath|4.3.0;
+ System.Xml.XPath.XDocument|4.3.0;
+ </OverriddenPackages>
+ </PackageConflictOverrides>
+ <PackageConflictOverrides Include="NETStandard.Library">
+ <OverriddenPackages>
+ Microsoft.Win32.Primitives|4.3.0;
+ System.AppContext|4.3.0;
+ System.Collections|4.3.0;
+ System.Collections.Concurrent|4.3.0;
+ System.Collections.Immutable|1.4.0;
+ System.Collections.NonGeneric|4.3.0;
+ System.Collections.Specialized|4.3.0;
+ System.ComponentModel|4.3.0;
+ System.ComponentModel.EventBasedAsync|4.3.0;
+ System.ComponentModel.Primitives|4.3.0;
+ System.ComponentModel.TypeConverter|4.3.0;
+ System.Console|4.3.0;
+ System.Data.Common|4.3.0;
+ System.Diagnostics.Contracts|4.3.0;
+ System.Diagnostics.Debug|4.3.0;
+ System.Diagnostics.FileVersionInfo|4.3.0;
+ System.Diagnostics.Process|4.3.0;
+ System.Diagnostics.StackTrace|4.3.0;
+ System.Diagnostics.TextWriterTraceListener|4.3.0;
+ System.Diagnostics.Tools|4.3.0;
+ System.Diagnostics.TraceSource|4.3.0;
+ System.Diagnostics.Tracing|4.3.0;
+ System.Dynamic.Runtime|4.3.0;
+ System.Globalization|4.3.0;
+ System.Globalization.Calendars|4.3.0;
+ System.Globalization.Extensions|4.3.0;
+ System.IO|4.3.0;
+ System.IO.Compression|4.3.0;
+ System.IO.Compression.ZipFile|4.3.0;
+ System.IO.FileSystem|4.3.0;
+ System.IO.FileSystem.DriveInfo|4.3.0;
+ System.IO.FileSystem.Primitives|4.3.0;
+ System.IO.FileSystem.Watcher|4.3.0;
+ System.IO.IsolatedStorage|4.3.0;
+ System.IO.MemoryMappedFiles|4.3.0;
+ System.IO.Pipes|4.3.0;
+ System.IO.UnmanagedMemoryStream|4.3.0;
+ System.Linq|4.3.0;
+ System.Linq.Expressions|4.3.0;
+ System.Linq.Queryable|4.3.0;
+ System.Net.Http|4.3.0;
+ System.Net.NameResolution|4.3.0;
+ System.Net.Primitives|4.3.0;
+ System.Net.Requests|4.3.0;
+ System.Net.Security|4.3.0;
+ System.Net.Sockets|4.3.0;
+ System.Net.WebHeaderCollection|4.3.0;
+ System.ObjectModel|4.3.0;
+ System.Private.DataContractSerialization|4.3.0;
+ System.Reflection|4.3.0;
+ System.Reflection.Emit|4.3.0;
+ System.Reflection.Emit.ILGeneration|4.3.0;
+ System.Reflection.Emit.Lightweight|4.3.0;
+ System.Reflection.Extensions|4.3.0;
+ System.Reflection.Primitives|4.3.0;
+ System.Reflection.TypeExtensions|4.3.0;
+ System.Resources.ResourceManager|4.3.0;
+ System.Runtime|4.3.0;
+ System.Runtime.Extensions|4.3.0;
+ System.Runtime.Handles|4.3.0;
+ System.Runtime.InteropServices|4.3.0;
+ System.Runtime.InteropServices.RuntimeInformation|4.3.0;
+ System.Runtime.Loader|4.3.0;
+ System.Runtime.Numerics|4.3.0;
+ System.Runtime.Serialization.Formatters|4.3.0;
+ System.Runtime.Serialization.Json|4.3.0;
+ System.Runtime.Serialization.Primitives|4.3.0;
+ System.Security.AccessControl|4.4.0;
+ System.Security.Claims|4.3.0;
+ System.Security.Cryptography.Algorithms|4.3.0;
+ System.Security.Cryptography.Csp|4.3.0;
+ System.Security.Cryptography.Encoding|4.3.0;
+ System.Security.Cryptography.Primitives|4.3.0;
+ System.Security.Cryptography.X509Certificates|4.3.0;
+ System.Security.Cryptography.Xml|4.4.0;
+ System.Security.Principal|4.3.0;
+ System.Security.Principal.Windows|4.4.0;
+ System.Text.Encoding|4.3.0;
+ System.Text.Encoding.Extensions|4.3.0;
+ System.Text.RegularExpressions|4.3.0;
+ System.Threading|4.3.0;
+ System.Threading.Overlapped|4.3.0;
+ System.Threading.Tasks|4.3.0;
+ System.Threading.Tasks.Extensions|4.3.0;
+ System.Threading.Tasks.Parallel|4.3.0;
+ System.Threading.Thread|4.3.0;
+ System.Threading.ThreadPool|4.3.0;
+ System.Threading.Timer|4.3.0;
+ System.ValueTuple|4.3.0;
+ System.Xml.ReaderWriter|4.3.0;
+ System.Xml.XDocument|4.3.0;
+ System.Xml.XmlDocument|4.3.0;
+ System.Xml.XmlSerializer|4.3.0;
+ System.Xml.XPath|4.3.0;
+ System.Xml.XPath.XDocument|4.3.0;
+ </OverriddenPackages>
+ </PackageConflictOverrides>
+ </ItemGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DesignerSupport.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DesignerSupport.targets
new file mode 100644
index 0000000000..76dc53f93a
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DesignerSupport.targets
@@ -0,0 +1,143 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.DesignerSupport.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition="'$(DesignerRuntimeImplementationProjectOutputGroupDependsOn)' == ''">
+ <DesignerRuntimeImplementationProjectOutputGroupDependsOn>
+ $(CommonOutputGroupsDependsOn);
+ </DesignerRuntimeImplementationProjectOutputGroupDependsOn>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <DesignerRuntimeImplementationProjectOutputGroupDependsOn>
+ $(DesignerRuntimeImplementationProjectOutputGroupDependsOn);
+ _GenerateDesignerDepsFile;
+ _GenerateDesignerRuntimeConfigFile;
+ _GatherDesignerShadowCopyFiles;
+ </DesignerRuntimeImplementationProjectOutputGroupDependsOn>
+
+ <_DesignerDepsFileName>$(AssemblyName).designer.deps.json</_DesignerDepsFileName>
+ <_DesignerRuntimeConfigFileName>$(AssemblyName).designer.runtimeconfig.json</_DesignerRuntimeConfigFileName>
+
+ <_DesignerDepsFilePath>$(IntermediateOutputPath)$(_DesignerDepsFileName)</_DesignerDepsFilePath>
+ <_DesignerRuntimeConfigFilePath>$(IntermediateOutputPath)$(_DesignerRuntimeConfigFileName)</_DesignerRuntimeConfigFilePath>
+ </PropertyGroup>
+
+ <Target
+ Name="DesignerRuntimeImplementationProjectOutputGroup"
+ DependsOnTargets="$(DesignerRuntimeImplementationProjectOutputGroupDependsOn)"
+ Returns="@(DesignerRuntimeImplementationProjectOutputGroupOutput)"
+ />
+
+ <Target
+ Name="_GenerateDesignerDepsFile"
+ Inputs="$(MSBuildAllProjectFiles);$(ProjectAssetsFile)"
+ Outputs="$(_DesignerDepsFilePath)"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
+ >
+ <!--
+ NOTE: We do not include the main assembly info or non-NuGet dependencies
+ in designer deps file as these files may not be built yet at design time.
+ Instead, we rely on SetAppPaths in runtimeconfig to allow loading of
+ non-NuGet assets from shadow copied app base directory. This further
+ allows loading of designer dll(s) that are not seen by the build.
+ -->
+ <GenerateDepsFile
+ AssemblyName="_"
+ AssemblyExtension="_"
+ AssemblyVersion="_"
+ AssetsFilePath="$(ProjectAssetsFile)"
+ DepsFilePath="$(_DesignerDepsFilePath)"
+ IncludeMainProject="false"
+ IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)"
+ IsSelfContained="false"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ ProjectPath="$(MSBuildProjectFullPath)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ CompileReferences="@(ResolvedCompileFileDefinitions)"
+ ResolvedNuGetFiles="@(NativeCopyLocalItems);@(ResourceCopyLocalItems);@(RuntimeCopyLocalItems)"
+ ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)"
+ TargetFramework="$(TargetFrameworkMoniker)"
+ />
+
+ <ItemGroup>
+ <!-- Designer will rename to <surface process name>.deps.json -->
+ <DesignerRuntimeImplementationProjectOutputGroupOutput
+ Include="$([MSBuild]::NormalizePath($(_DesignerDepsFilePath)))"
+ TargetPath="$(_DesignerDepsFileName)"
+ />
+
+ <FileWrites Include="$(_DesignerDepsFilePath)" />
+ </ItemGroup>
+ </Target>
+
+ <Target
+ Name="_GenerateDesignerRuntimeConfigFile"
+ Inputs="$(MSBuildAllProjectFiles);$(ProjectAssetsFile)"
+ Outputs="$(_DesignerRuntimeConfigFilePath)"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
+ >
+
+ <ItemGroup>
+ <_DesignerHostConfigurationOption
+ Include="Microsoft.NETCore.DotNetHostPolicy.SetAppPaths"
+ Value="true"
+ />
+ </ItemGroup>
+
+ <GenerateRuntimeConfigurationFiles
+ AdditionalProbingPaths="@(AdditionalProbingPath)"
+ AssetsFilePath="$(ProjectAssetsFile)"
+ HostConfigurationOptions="@(RuntimeHostConfigurationOption);@(_DesignerHostConfigurationOption)"
+ IsSelfContained="false"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeConfigPath="$(_DesignerRuntimeConfigFilePath)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ TargetFramework="$(TargetFramework)"
+ TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
+ UserRuntimeConfig="$(UserRuntimeConfig)"
+ WriteAdditionalProbingPathsToMainConfig="true"
+ />
+
+ <ItemGroup>
+ <!-- Designer will rename to <surface process name>.runtimeconfig.json -->
+ <DesignerRuntimeImplementationProjectOutputGroupOutput
+ Include="$([MSBuild]::NormalizePath($(_DesignerRuntimeConfigFilePath)))"
+ TargetPath="$(_DesignerRuntimeConfigFileName)"
+ />
+
+ <FileWrites Include="$(_DesignerRuntimeConfigFilePath)" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="_GatherDesignerShadowCopyFiles">
+ <ItemGroup>
+ <_DesignerShadowCopy Include="@(ReferenceCopyLocalPaths)" />
+
+ <!--
+ For .NET Core, we do not include NuGet package assets or runtime pack
+ assets, irrespective of self-contained / copy-local settings. Designer
+ will load these from the NuGet cache or shared framework always.
+ -->
+ <_DesignerShadowCopy
+ Remove="@(_ResolvedCopyLocalBuildAssets);@(RuntimePackAsset)"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
+ />
+
+ <DesignerRuntimeImplementationProjectOutputGroupOutput
+ Include="@(_DesignerShadowCopy->'%(FullPath)')"
+ TargetPath="%(_DesignerShadowCopy.DestinationSubDirectory)%(_DesignerShadowCopy.Filename)%(_DesignerShadowCopy.Extension)"
+ />
+ </ItemGroup>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DisableStandardFrameworkResolution.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DisableStandardFrameworkResolution.targets
new file mode 100644
index 0000000000..99601458c2
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.DisableStandardFrameworkResolution.targets
@@ -0,0 +1,26 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.DisableStandardFrameworkResolution.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Target Name="GetReferenceAssemblyPaths" />
+ <Target Name="GetFrameworkPaths" />
+
+ <PropertyGroup>
+ <_TargetFrameworkDirectories />
+ <FrameworkPathOverride />
+ <TargetFrameworkDirectory />
+
+ <!-- all references (even the StdLib) come from packages -->
+ <NoStdLib>true</NoStdLib>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateAssemblyInfo.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateAssemblyInfo.targets
new file mode 100644
index 0000000000..56ded98711
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateAssemblyInfo.targets
@@ -0,0 +1,170 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.GenerateAssemblyInfo.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <!--
+ ============================================================
+ GenerateAssemblyInfo
+
+ Generates assembly info source to intermediate directory
+ ============================================================
+ -->
+ <PropertyGroup>
+ <GeneratedAssemblyInfoFile Condition="'$(GeneratedAssemblyInfoFile)' ==''">$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfo$(DefaultLanguageSourceExtension)</GeneratedAssemblyInfoFile>
+ <GenerateAssemblyInfo Condition="'$(GenerateAssemblyInfo)' == ''">true</GenerateAssemblyInfo>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(GenerateAssemblyInfo)' == 'true'">
+ <GenerateAssemblyCompanyAttribute Condition="'$(GenerateAssemblyCompanyAttribute)' == ''">true</GenerateAssemblyCompanyAttribute>
+ <GenerateAssemblyConfigurationAttribute Condition="'$(GenerateAssemblyConfigurationAttribute)' == ''">true</GenerateAssemblyConfigurationAttribute>
+ <GenerateAssemblyCopyrightAttribute Condition="'$(GenerateAssemblyCopyrightAttribute)' == ''">true</GenerateAssemblyCopyrightAttribute>
+ <GenerateAssemblyDescriptionAttribute Condition="'$(GenerateAssemblyDescriptionAttribute)' == ''">true</GenerateAssemblyDescriptionAttribute>
+ <GenerateAssemblyFileVersionAttribute Condition="'$(GenerateAssemblyFileVersionAttribute)' == ''">true</GenerateAssemblyFileVersionAttribute>
+ <GenerateAssemblyInformationalVersionAttribute Condition="'$(GenerateAssemblyInformationalVersionAttribute)' == ''">true</GenerateAssemblyInformationalVersionAttribute>
+ <GenerateAssemblyProductAttribute Condition="'$(GenerateAssemblyProductAttribute)' == ''">true</GenerateAssemblyProductAttribute>
+ <GenerateAssemblyTitleAttribute Condition="'$(GenerateAssemblyTitleAttribute)' == ''">true</GenerateAssemblyTitleAttribute>
+ <GenerateAssemblyVersionAttribute Condition="'$(GenerateAssemblyVersionAttribute)' == ''">true</GenerateAssemblyVersionAttribute>
+ <GenerateNeutralResourcesLanguageAttribute Condition="'$(GenerateNeutralResourcesLanguageAttribute)' == ''">true</GenerateNeutralResourcesLanguageAttribute>
+ <IncludeSourceRevisionInInformationalVersion Condition="'$(IncludeSourceRevisionInInformationalVersion)' == ''">true</IncludeSourceRevisionInInformationalVersion>
+ </PropertyGroup>
+
+ <!--
+ Note that this must run before every invocation of CoreCompile to ensure that all compiler
+ runs see the generated assembly info. There is at least one scenario involving Xaml
+ where CoreCompile is invoked without other potential hooks such as Compile or CoreBuild,
+ etc., so we hook directly on to CoreCompile. Furthermore, we must run *after*
+ PrepareForBuild to ensure that the intermediate directory has been created.
+ -->
+ <Target Name="GenerateAssemblyInfo"
+ BeforeTargets="CoreCompile"
+ DependsOnTargets="PrepareForBuild;CoreGenerateAssemblyInfo"
+ Condition="'$(GenerateAssemblyInfo)' == 'true'" />
+
+ <Target Name="AddSourceRevisionToInformationalVersion"
+ DependsOnTargets="GetAssemblyVersion;InitializeSourceControlInformation"
+ Condition="'$(SourceControlInformationFeatureSupported)' == 'true' and '$(IncludeSourceRevisionInInformationalVersion)' == 'true'">
+ <PropertyGroup Condition="'$(SourceRevisionId)' != ''">
+ <!-- Follow SemVer 2.0 rules -->
+ <_InformationalVersionContainsPlus>false</_InformationalVersionContainsPlus>
+ <_InformationalVersionContainsPlus Condition="$(InformationalVersion.Contains('+'))">true</_InformationalVersionContainsPlus>
+
+ <InformationalVersion Condition="!$(_InformationalVersionContainsPlus)">$(InformationalVersion)+$(SourceRevisionId)</InformationalVersion>
+ <InformationalVersion Condition="$(_InformationalVersionContainsPlus)">$(InformationalVersion).$(SourceRevisionId)</InformationalVersion>
+ </PropertyGroup>
+ </Target>
+
+ <Target Name="GetAssemblyAttributes"
+ DependsOnTargets="GetAssemblyVersion;AddSourceRevisionToInformationalVersion">
+ <ItemGroup>
+ <AssemblyAttribute Include="System.Reflection.AssemblyCompanyAttribute" Condition="'$(Company)' != '' and '$(GenerateAssemblyCompanyAttribute)' == 'true'">
+ <_Parameter1>$(Company)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyConfigurationAttribute" Condition="'$(Configuration)' != '' and '$(GenerateAssemblyConfigurationAttribute)' == 'true'">
+ <_Parameter1>$(Configuration)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyCopyrightAttribute" Condition="'$(Copyright)' != '' and '$(GenerateAssemblyCopyrightAttribute)' == 'true'">
+ <_Parameter1>$(Copyright)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyDescriptionAttribute" Condition="'$(Description)' != '' and '$(GenerateAssemblyDescriptionAttribute)' == 'true'">
+ <_Parameter1>$(Description)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyFileVersionAttribute" Condition="'$(FileVersion)' != '' and '$(GenerateAssemblyFileVersionAttribute)' == 'true'">
+ <_Parameter1>$(FileVersion)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyInformationalVersionAttribute" Condition="'$(InformationalVersion)' != '' and '$(GenerateAssemblyInformationalVersionAttribute)' == 'true'">
+ <_Parameter1>$(InformationalVersion)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyProductAttribute" Condition="'$(Product)' != '' and '$(GenerateAssemblyProductAttribute)' == 'true'">
+ <_Parameter1>$(Product)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyTitleAttribute" Condition="'$(AssemblyTitle)' != '' and '$(GenerateAssemblyTitleAttribute)' == 'true'">
+ <_Parameter1>$(AssemblyTitle)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Reflection.AssemblyVersionAttribute" Condition="'$(AssemblyVersion)' != '' and '$(GenerateAssemblyVersionAttribute)' == 'true'">
+ <_Parameter1>$(AssemblyVersion)</_Parameter1>
+ </AssemblyAttribute>
+ <AssemblyAttribute Include="System.Resources.NeutralResourcesLanguageAttribute" Condition="'$(NeutralLanguage)' != '' and '$(GenerateNeutralResourcesLanguageAttribute)' == 'true'">
+ <_Parameter1>$(NeutralLanguage)</_Parameter1>
+ </AssemblyAttribute>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ To allow version changes to be respected on incremental builds (e.g. through CLI parameters),
+ create a hash of all assembly attributes so that the cache file will change with the calculated
+ assembly attribute values and msbuild will then execute CoreGenerateAssembly to generate a new file.
+ -->
+ <Target Name="CreateGeneratedAssemblyInfoInputsCacheFile"
+ DependsOnTargets="GetAssemblyAttributes">
+ <PropertyGroup>
+ <GeneratedAssemblyInfoInputsCacheFile>$(IntermediateOutputPath)$(MSBuildProjectName).AssemblyInfoInputs.cache</GeneratedAssemblyInfoInputsCacheFile>
+ </PropertyGroup>
+
+ <!-- We only use up to _Parameter1 for most attributes, but other targets may add additional assembly attributes with multiple parameters. -->
+ <Hash ItemsToHash="@(AssemblyAttribute->'%(Identity)%(_Parameter1)%(_Parameter2)%(_Parameter3)%(_Parameter4)%(_Parameter5)%(_Parameter6)%(_Parameter7)%(_Parameter8)')">
+ <Output TaskParameter="HashResult" PropertyName="_AssemblyAttributesHash" />
+ </Hash>
+
+ <WriteLinesToFile Lines="$(_AssemblyAttributesHash)" File="$(GeneratedAssemblyInfoInputsCacheFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
+
+ <ItemGroup>
+ <FileWrites Include="$(GeneratedAssemblyInfoInputsCacheFile)" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="CoreGenerateAssemblyInfo"
+ Condition="'$(Language)'=='VB' or '$(Language)'=='C#'"
+ DependsOnTargets="CreateGeneratedAssemblyInfoInputsCacheFile"
+ Inputs="$(GeneratedAssemblyInfoInputsCacheFile)"
+ Outputs="$(GeneratedAssemblyInfoFile)">
+ <ItemGroup>
+ <!-- Ensure the generated assemblyinfo file is not already part of the Compile sources, as a workaround for https://github.com/dotnet/sdk/issues/114 -->
+ <Compile Remove="$(GeneratedAssemblyInfoFile)" />
+ </ItemGroup>
+
+ <WriteCodeFragment AssemblyAttributes="@(AssemblyAttribute)" Language="$(Language)" OutputFile="$(GeneratedAssemblyInfoFile)">
+ <Output TaskParameter="OutputFile" ItemName="Compile" />
+ <Output TaskParameter="OutputFile" ItemName="FileWrites" />
+ </WriteCodeFragment>
+ </Target>
+
+
+ <!--
+ ==================================================================
+ GetAssemblyVersion
+
+ Parses the nuget package version set in $(Version) and returns
+ the implied $(AssemblyVersion) and $(FileVersion).
+
+ e.g.:
+ <Version>1.2.3-beta.4</Version>
+
+ implies:
+ <AssemblyVersion>1.2.3</AssemblyVersion>
+ <FileVersion>1.2.3</FileVersion>
+
+ Note that if $(AssemblyVersion) or $(FileVersion) are are already set, it
+ is considered an override of the default inference from $(Version) and they
+ are left unchanged by this target.
+ ==================================================================
+ -->
+ <Target Name="GetAssemblyVersion">
+ <GetAssemblyVersion Condition="'$(AssemblyVersion)' == ''" NuGetVersion="$(Version)">
+ <Output TaskParameter="AssemblyVersion" PropertyName="AssemblyVersion" />
+ </GetAssemblyVersion>
+
+ <PropertyGroup>
+ <FileVersion Condition="'$(FileVersion)' == ''">$(AssemblyVersion)</FileVersion>
+ <InformationalVersion Condition="'$(InformationalVersion)' == ''">$(Version)</InformationalVersion>
+ </PropertyGroup>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateSupportedRuntime.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateSupportedRuntime.targets
new file mode 100644
index 0000000000..19d7680233
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.GenerateSupportedRuntime.targets
@@ -0,0 +1,63 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.GenerateSupportedRuntime.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <UsingTask TaskName="WriteAppConfigWithSupportedRuntime" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="SetGeneratedAppConfigMetadata" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <PropertyGroup>
+ <_GenerateSupportedRuntimeIntermediateAppConfig>$(IntermediateOutputPath)$(TargetFileName).withSupportedRuntime.config</_GenerateSupportedRuntimeIntermediateAppConfig>
+ </PropertyGroup>
+
+ <Target Name="GenerateSupportedRuntime"
+ Condition="'$(GenerateSupportedRuntime)' != 'false' and '$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(HasRuntimeOutput)' == 'true'"
+ DependsOnTargets="_WriteAppConfigWithSupportedRuntime"
+ BeforeTargets="GenerateBindingRedirects">
+
+ <SetGeneratedAppConfigMetadata
+ AppConfigFile="@(AppConfigWithTargetPath)"
+ TargetName="$(TargetFileName).config"
+ GeneratedAppConfigFile="$(_GenerateSupportedRuntimeIntermediateAppConfig)"
+ >
+
+ <Output TaskParameter="OutputAppConfigFileWithMetadata" ItemName="_GenerateSupportedRuntimeAppConfigWithTargetPath" />
+ </SetGeneratedAppConfigMetadata>
+
+ <!--Override the AppConfigWithTargetPath for downstream target-->
+ <ItemGroup>
+ <AppConfigWithTargetPath Remove="@(AppConfigWithTargetPath)" />
+ <AppConfigWithTargetPath Include="@(_GenerateSupportedRuntimeAppConfigWithTargetPath)" />
+ </ItemGroup>
+
+ </Target>
+
+ <Target Name="_WriteAppConfigWithSupportedRuntime"
+ Inputs="$(MSBuildAllProjects);@(AppConfigWithTargetPath)"
+ Outputs="$(_GenerateSupportedRuntimeIntermediateAppConfig)"
+ DependsOnTargets="PrepareForBuild">
+
+ <WriteAppConfigWithSupportedRuntime
+ AppConfigFile="@(AppConfigWithTargetPath)"
+ TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
+ TargetFrameworkVersion="$(TargetFrameworkVersion)"
+ TargetFrameworkProfile="$(TargetFrameworkProfile)"
+ OutputAppConfigFile="$(_GenerateSupportedRuntimeIntermediateAppConfig)"
+ >
+ </WriteAppConfigWithSupportedRuntime>
+
+ <ItemGroup>
+ <FileWrites Include="@(_GenerateSupportedRuntimeAppConfigWithTargetPath)"/>
+ </ItemGroup>
+
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets
new file mode 100644
index 0000000000..9f055ec138
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ILLink.targets
@@ -0,0 +1,147 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.ILLink.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Import Project="Sdk.props" Sdk="ILLink.Tasks" />
+
+ <PropertyGroup Condition=" '$(PublishTrimmed)' == 'true' ">
+ <IntermediateLinkDir Condition=" '$(IntermediateLinkDir)' == '' ">$(IntermediateOutputPath)linked\</IntermediateLinkDir>
+ <IntermediateLinkDir Condition=" !HasTrailingSlash('$(IntermediateLinkDir)') ">$(IntermediateLinkDir)\</IntermediateLinkDir>
+ <!-- Used to enable incremental build for the linker target. -->
+ <_LinkSemaphore>$(IntermediateOutputPath)Link.semaphore</_LinkSemaphore>
+ </PropertyGroup>
+
+ <!--
+ ============================================================
+ ILLink
+
+ Replace the files to be published with versions that have been
+ passed through the linker. Also prevent removed files from being
+ included in the generated deps.json.
+ ============================================================
+ -->
+ <Target Name="ILLink"
+ Condition=" '$(PublishTrimmed)' == 'true' And
+ '$(_TargetFrameworkVersionWithoutV)' >= '3.0' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' "
+ DependsOnTargets="_RunILLink">
+
+ <NETSdkInformation ResourceName="ILLink_Info" />
+
+ <ItemGroup>
+ <_LinkedResolvedFileToPublish Include="@(_LinkedResolvedFileToPublishCandidates)" Condition="Exists('%(Identity)')" />
+ <ResolvedFileToPublish Remove="@(_ManagedAssembliesToLink)" />
+ <ResolvedFileToPublish Include="@(_LinkedResolvedFileToPublish)" />
+ </ItemGroup>
+
+ <!-- Remove assemblies from inputs to GenerateDepsFile. See
+ https://github.com/dotnet/sdk/pull/3086. -->
+ <ItemGroup>
+ <_RemovedManagedAssemblies Include="@(_ManagedAssembliesToLink)" Condition="!Exists('$(IntermediateLinkDir)%(Filename)%(Extension)')" />
+
+ <ResolvedCompileFileDefinitions Remove="@(_RemovedManagedAssemblies)" />
+ <RuntimeCopyLocalItems Remove="@(_RemovedManagedAssemblies)" />
+ <RuntimeTargetsCopyLocalItems Remove="@(_RemovedManagedAssemblies)" />
+ <UserRuntimeAssembly Remove="@(_RemovedManagedAssemblies)" />
+ <RuntimePackAsset Remove="@(_RemovedManagedAssemblies)" />
+ </ItemGroup>
+
+ </Target>
+
+
+ <!--
+ ============================================================
+ _RunILLink
+
+ Execute the linker. This target runs incrementally, only executing
+ if the output semaphore file is out of date with respect to the inputs.
+ ============================================================
+ -->
+ <UsingTask TaskName="ILLink" AssemblyFile="$(ILLinkTasksAssembly)" />
+ <Target Name="_RunILLink"
+ DependsOnTargets="_ComputeManagedAssembliesToLink;_SetILLinkDefaults"
+ Inputs="$(MSBuildAllProjects);@(_ManagedAssembliesToLink);@(TrimmerRootDescriptor);@(ReferencePath)"
+ Outputs="$(_LinkSemaphore)">
+
+ <!-- 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)' == '' ">
+ <_DotNetHostDirectory>$(NetCoreRoot)</_DotNetHostDirectory>
+ <_DotNetHostFileName>dotnet</_DotNetHostFileName>
+ <_DotNetHostFileName Condition=" '$(OS)' == 'Windows_NT' ">dotnet.exe</_DotNetHostFileName>
+ </PropertyGroup>
+
+ <Delete Files="@(_LinkedResolvedFileToPublishCandidates)" />
+ <ILLink AssemblyPaths="@(_ManagedAssembliesToLink)"
+ ReferenceAssemblyPaths="@(ReferencePath)"
+ RootAssemblyNames="@(TrimmerRootAssembly)"
+ RootDescriptorFiles="@(TrimmerRootDescriptor)"
+ OutputDirectory="$(IntermediateLinkDir)"
+ ExtraArgs="$(_ExtraTrimmerArgs)"
+ ToolExe="$(_DotNetHostFileName)"
+ ToolPath="$(_DotNetHostDirectory)" />
+
+ <Touch Files="$(_LinkSemaphore)" AlwaysCreate="true" />
+
+ </Target>
+
+ <!--
+ ============================================================
+ _SetILLinkDefaults
+
+ Set up the default options and inputs to ILLink.
+ -->
+ <Target Name="_SetILLinkDefaults"
+ DependsOnTargets="_ComputeManagedAssembliesToLink">
+
+ <!-- The defaults currently root non-framework assemblies, which
+ is a no-op for portable apps. If we later support more ways
+ to customize the behavior we can allow linking portable apps
+ in some cases. -->
+ <NETSdkError Condition="'$(SelfContained)' != 'true'" ResourceName="ILLinkNotSupportedError" />
+
+ <PropertyGroup>
+ <_ExtraTrimmerArgs>-l none --skip-unresolved true $(_ExtraTrimmerArgs)</_ExtraTrimmerArgs>
+ <_ExtraTrimmerArgs>-c copyused -u copyused $(_ExtraTrimmerArgs)</_ExtraTrimmerArgs>
+ </PropertyGroup>
+ <ItemGroup>
+ <TrimmerRootAssembly Include="@(_ManagedAssembliesToLink)" Condition=" '%(_ManagedAssembliesToLink.IsTrimmable)' != 'true' " />
+ <_ManagedAssembliesToLink Update="@(_ManagedAssembliesToLink)" Condition=" '%(_ManagedAssembliesToLink.IsTrimmable)' != 'true' ">
+ <action>copy</action>
+ </_ManagedAssembliesToLink>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeManagedAssembliesToLink
+
+ Compute the set of inputs to the linker.
+ ============================================================
+ -->
+ <UsingTask TaskName="ComputeManagedAssemblies" AssemblyFile="$(ILLinkTasksAssembly)" />
+ <Target Name="_ComputeManagedAssembliesToLink" DependsOnTargets="_ComputeAssembliesToPostprocessOnPublish">
+
+ <!-- NB: There should not be non-managed assemblies in this list, but we still give the linker a chance to
+ further refine this list. It currently drops C++/CLI assemblies in ComputeManageAssemblies. -->
+ <ComputeManagedAssemblies Assemblies="@(ResolvedFileToPublish->WithMetadataValue('PostprocessAssembly', 'true'))">
+ <Output TaskParameter="ManagedAssemblies" ItemName="_ManagedAssembliesToLink" />
+ </ComputeManagedAssemblies>
+
+ <ItemGroup>
+ <_LinkedResolvedFileToPublishCandidates Include="@(_ManagedAssembliesToLink->'$(IntermediateLinkDir)%(Filename)%(Extension)')" />
+ </ItemGroup>
+
+ </Target>
+
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.NuGetOfflineCache.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.NuGetOfflineCache.targets
new file mode 100644
index 0000000000..7756e63997
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.NuGetOfflineCache.targets
@@ -0,0 +1,25 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.NuGetOfflineCache.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <_NugetFallbackFolder>$(MSBuildThisFileDirectory)..\..\..\..\NuGetFallbackFolder</_NugetFallbackFolder>
+ <_IsNETCore1x Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.0' ">true</_IsNETCore1x>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(DisableImplicitNuGetFallbackFolder)' != 'true' and Exists($(_NugetFallbackFolder)) ">
+ <RestoreAdditionalProjectSources Condition=" '$(_IsNETCore1x)' == 'true' and '$(DisableImplicit1xNuGetFallbackFolder)' != 'true' ">$(RestoreAdditionalProjectSources);$(_NugetFallbackFolder)</RestoreAdditionalProjectSources>
+ <RestoreAdditionalProjectFallbackFoldersExcludes Condition=" '$(_IsNETCore1x)' == 'true' ">$(RestoreAdditionalProjectFallbackFoldersExcludes);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFoldersExcludes>
+
+ <RestoreAdditionalProjectFallbackFolders Condition=" '$(_IsNETCore1x)' != 'true' ">$(RestoreAdditionalProjectFallbackFolders);$(_NugetFallbackFolder)</RestoreAdditionalProjectFallbackFolders>
+ </PropertyGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ObsoleteReferences.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ObsoleteReferences.targets
new file mode 100644
index 0000000000..4e61aea752
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.ObsoleteReferences.targets
@@ -0,0 +1,34 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.ObsoleteReferences.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition="'$(NETCoreSdkBundledCliToolsProps)' == ''">
+ <NETCoreSdkBundledCliToolsProps>$(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledCliTools.props</NETCoreSdkBundledCliToolsProps>
+ </PropertyGroup>
+
+ <Import Project="$(NETCoreSdkBundledCliToolsProps)" Condition="Exists('$(NETCoreSdkBundledCliToolsProps)')" />
+
+ <ItemGroup>
+ <_ReferenceToObsoleteDotNetCliTool Include="@(DotNetCliToolReference)" />
+ <DotNetCliToolReference Remove="@(BundledDotNetCliToolReference)" />
+ <_ReferenceToObsoleteDotNetCliTool Remove="@(DotNetCliToolReference)" />
+ </ItemGroup>
+
+ <Target Name="_CheckForObsoleteDotNetCliToolReferences"
+ BeforeTargets="CollectPackageReferences"
+ Condition=" '$(SuppressObsoleteDotNetCliToolWarning)' != 'true' ">
+ <NETSdkWarning Condition=" '%(_ReferenceToObsoleteDotNetCliTool.Identity)' != '' "
+ ResourceName="ProjectContainsObsoleteDotNetCliTool"
+ FormatArguments="%(_ReferenceToObsoleteDotNetCliTool.Identity)" />
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.props
new file mode 100644
index 0000000000..d31a336d0a
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.props
@@ -0,0 +1,17 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PackProjectTool.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);_PackProjectToolValidation</TargetsForTfmSpecificContentInPackage>
+ </PropertyGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.targets
new file mode 100644
index 0000000000..e1842460b9
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackProjectTool.targets
@@ -0,0 +1,20 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PackProjectTool.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Target Name="_PackProjectToolValidation" Condition=" '$(PackageType)' == 'DotnetCliTool'">
+
+ <NETSdkError Condition=" '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &gt; '2.2' "
+ ResourceName="ProjectToolOnlySupportTFMLowerThanNetcoreapp22" />
+ </Target>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackStubs.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackStubs.targets
new file mode 100644
index 0000000000..f2ede3aad2
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackStubs.targets
@@ -0,0 +1,27 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PackStubs.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ ============================================================
+ Pack
+
+ Stub Pack target to surface better error message when not supported.
+ ============================================================
+ -->
+
+
+ <Target Name="Pack" >
+ <NETSdkError ResourceName="NoSupportCppPackDotnetCore" />
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.props
new file mode 100644
index 0000000000..041ece4267
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.props
@@ -0,0 +1,17 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PackTool.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <TargetsForTfmSpecificContentInPackage>$(TargetsForTfmSpecificContentInPackage);PackTool</TargetsForTfmSpecificContentInPackage>
+ </PropertyGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.targets
new file mode 100644
index 0000000000..31b1be70bd
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PackTool.targets
@@ -0,0 +1,176 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PackTool.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.GenerateToolsSettingsFile"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.GenerateShims"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolveToolPackagePaths"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetEmbeddedApphostPaths"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ Mark all dependency as private assets. But keep them as Publish. So dependency DLLs will be included in NuGet package, while
+ there is no dependency in nuspec. And add Microsoft.NETCore.Platforms, which is used to select correct RID assets.
+ -->
+ <PropertyGroup>
+ <_ToolsSettingsFilePath>$(BaseIntermediateOutputPath)DotnetToolSettings.xml</_ToolsSettingsFilePath>
+ <SuppressDependenciesWhenPacking Condition=" '$(PackAsTool)' == 'true' ">true</SuppressDependenciesWhenPacking>
+ <_PackToolPublishDependency Condition=" ('$(GeneratePackageOnBuild)' != 'true' and '$(NoBuild)' != 'true') and $(IsPublishable) == 'true' ">_PublishBuildAlternative</_PackToolPublishDependency>
+ <_PackToolPublishDependency Condition=" ('$(GeneratePackageOnBuild)' == 'true' or '$(NoBuild)' == 'true') and $(IsPublishable) == 'true' ">$(_PublishNoBuildAlternativeDependsOn)</_PackToolPublishDependency>
+ </PropertyGroup>
+
+ <Target Name="PackTool" DependsOnTargets="GenerateToolsSettingsFileFromBuildProperty;$(_PackToolPublishDependency);_PackToolValidation" Condition=" '$(PackAsTool)' == 'true' ">
+ <ItemGroup>
+ <_GeneratedFiles Include="$(PublishDepsFilePath)"/>
+ <_GeneratedFiles Include="$(PublishRuntimeConfigFilePath)"/>
+ <_GeneratedFiles Include="$(_ToolsSettingsFilePath)"/>
+ </ItemGroup>
+
+ <ResolveToolPackagePaths
+ AppHostIntermediatePath="$(AppHostIntermediatePath)"
+ ResolvedFileToPublish="@(ResolvedFileToPublish)"
+ PublishDir="$(PublishDir)"
+ TargetFramework="$(TargetFramework)">
+
+ <Output TaskParameter="ResolvedFileToPublishWithPackagePath" ItemName="_ResolvedFileToPublishWithPackagePath" />
+ </ResolveToolPackagePaths>
+
+ <ItemGroup>
+ <TfmSpecificPackageFile Include="@(_GeneratedFiles)">
+ <PackagePath>tools/$(TargetFramework)/any/%(_GeneratedFiles.RecursiveDir)%(_GeneratedFiles.Filename)%(_GeneratedFiles.Extension)</PackagePath>
+ </TfmSpecificPackageFile>
+
+ <TfmSpecificPackageFile Include="@(_ResolvedFileToPublishWithPackagePath)">
+ <PackagePath>%(_ResolvedFileToPublishWithPackagePath.PackagePath)</PackagePath>
+ </TfmSpecificPackageFile>
+ </ItemGroup>
+ </Target>
+
+ <PropertyGroup>
+ <ToolCommandName Condition=" '$(ToolCommandName)' == '' ">$(TargetName)</ToolCommandName>
+ <ToolEntryPoint Condition=" '$(ToolEntryPoint)' == '' ">$(TargetFileName)</ToolEntryPoint>
+ </PropertyGroup>
+
+ <Target Name="GenerateToolsSettingsFileFromBuildProperty" >
+ <GenerateToolsSettingsFile
+ EntryPointRelativePath="$(ToolEntryPoint)"
+ CommandName="$(ToolCommandName)"
+ ToolsSettingsFilePath="$(_ToolsSettingsFilePath)" />
+ </Target>
+
+ <Target Name="_PackToolValidation" Condition=" '$(PackAsTool)' == 'true' ">
+ <NETSdkError Condition=" '$(SelfContained)' == 'true' "
+ ResourceName="PackAsToolCannotSupportSelfContained" />
+
+ <NETSdkError Condition=" '$(TargetFrameworkIdentifier)' != '.NETCoreApp' "
+ ResourceName="DotnetToolOnlySupportNetcoreapp" />
+
+ <NETSdkError Condition=" '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1' "
+ ResourceName="DotnetToolDoesNotSupportTFMLowerThanNetcoreapp21" />
+ </Target>
+
+ <!--
+ ============================================================
+ GenerateShimsAssets
+
+ Generate packaged shims for signing when PackAsToolShimRuntimeIdentifiers is set
+ ============================================================
+ -->
+
+ <PropertyGroup>
+ <_ShimInputCacheFile Condition="'$(_ShimInputCacheFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).shiminput.cache</_ShimInputCacheFile>
+ <_ShimInputCacheFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(_ShimInputCacheFile)))</_ShimInputCacheFile>
+ <_ShimCreatedSentinelFile Condition="'$(_ShimCreatedSentinelFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).shimcreated.sentinel</_ShimCreatedSentinelFile>
+ <_ShimCreatedSentinelFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(_ShimCreatedSentinelFile)))</_ShimCreatedSentinelFile>
+ <PackagedShimOutputRootDirectory Condition=" '$(PackagedShimOutputRootDirectory)' == '' ">$(OutDir)</PackagedShimOutputRootDirectory>
+ </PropertyGroup>
+
+ <Target Name="GenerateShimsAssets"
+ BeforeTargets="CopyFilesToOutputDirectory"
+ DependsOnTargets="ResolvePackageAssets;_PackToolValidation;_GenerateShimInputCache;_ComputeExpectedEmbeddedApphostPaths"
+ Condition="'$(PackAsTool)' == 'true' and $(PackAsToolShimRuntimeIdentifiers) != '' "
+ Inputs="@(_GenerateShimsAssetsInput)"
+ Outputs="$(_ShimCreatedSentinelFile)">
+
+ <GenerateShims
+ ApphostsForShimRuntimeIdentifiers="@(_ApphostsForShimRuntimeIdentifiers)"
+ IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')"
+ OutputType="$(OutputType)"
+ PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(TargetFramework)"
+ PackageId="$(PackageId)"
+ PackageVersion="$(PackageVersion)"
+ ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
+ TargetFrameworkMoniker="$(NuGetTargetMoniker)"
+ ToolCommandName="$(ToolCommandName)"
+ ToolEntryPoint="$(ToolEntryPoint)">
+
+ <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
+ </GenerateShims>
+
+ <!-- Workaround for https://github.com/dotnet/corefx/issues/31379
+ LastWriteTime in shims are not accurate. And _ShimInputCacheFile will have later timestamp than generated shims.
+ Use a created file to "record" LastWriteTime. And only use it in "Outputs" field for timestamp comparison.
+
+ Touch Task uses the same API File.SetLastWriteTime underneath. So it also cannot be used.
+ -->
+ <WriteLinesToFile Lines="This file's LastWriteTime is used in incremental build" File="$(_ShimCreatedSentinelFile)" Overwrite="True" />
+
+ <ItemGroup>
+ <!-- Do this in an ItemGroup instead of as an output parameter so that it still gets added to the item set
+ during incremental builds when the task is skipped -->
+ <FileWrites Include="@(_EmbeddedApphostPaths)" />
+ <FileWrites Include="$(_ShimCreatedSentinelFile)" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="_ComputeExpectedEmbeddedApphostPaths">
+ <GetEmbeddedApphostPaths
+ PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(TargetFramework)"
+ ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
+ ToolCommandName="$(ToolCommandName)">
+
+ <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
+ </GetEmbeddedApphostPaths>
+ </Target>
+
+ <!-- To achieve incremental build with property change. When any property changes, WriteOnlyWhenDifferent will be triggered to write cache file.
+ And the cache file's timestamp will be later, and it then triggers the incremental build.-->
+ <Target Name="_GenerateShimInputCache" DependsOnTargets="ResolveAssemblyReferences">
+ <ItemGroup>
+ <_GenerateShimsAssetsInput Include="$(_ShimInputCacheFile)" />
+ <_GenerateShimsAssetsInput Include="@(_ApphostsForShimRuntimeIdentifiers)"/>
+ <_GenerateShimsAssetsInput Include="$(_ShimCreatedSentinelFile)"/>
+ <_GenerateShimsAssetsInput Include="$(ProjectAssetsFile)"/>
+
+ <_GenerateShimsAssetsInputCacheToHash Include="$(PackageId)"/>
+ <_GenerateShimsAssetsInputCacheToHash Include="$(Version)"/>
+ <_GenerateShimsAssetsInputCacheToHash Include="$(NuGetTargetMoniker)"/>
+ <_GenerateShimsAssetsInputCacheToHash Include="$(ToolCommandName)"/>
+ <_GenerateShimsAssetsInputCacheToHash Include="$(ToolEntryPoint)"/>
+ <_GenerateShimsAssetsInputCacheToHash Include="$(PackAsToolShimRuntimeIdentifiers)"/>
+ </ItemGroup>
+
+ <Hash ItemsToHash="@(_GenerateShimsAssetsInputCacheToHash)">
+ <Output TaskParameter="HashResult" PropertyName="_GenerateShimsAssetsInputCacheHash" />
+ </Hash>
+
+ <WriteLinesToFile Lines="$(_GenerateShimsAssetsInputCacheHash)" File="$(_ShimInputCacheFile)" Overwrite="True" WriteOnlyWhenDifferent="True" />
+
+ <ItemGroup>
+ <FileWrites Include="$(_ShimInputCacheFile)" />
+ </ItemGroup>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PreserveCompilationContext.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PreserveCompilationContext.targets
new file mode 100644
index 0000000000..99e5bf241e
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.PreserveCompilationContext.targets
@@ -0,0 +1,102 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.PreserveCompilationContext.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <RefAssembliesFolderName Condition="'$(RefAssembliesFolderName)' == ''">refs</RefAssembliesFolderName>
+
+ <PreserveCompilationReferences Condition=" '$(PreserveCompilationReferences)' == ''">$(PreserveCompilationContext)</PreserveCompilationReferences>
+ </PropertyGroup>
+
+ <Target Name="ComputeDependencyFileCompilerOptions"
+ Condition="'$(PreserveCompilationContext)' == 'true'"
+ BeforeTargets="GenerateBuildDependencyFile;
+ GeneratePublishDependencyFile">
+
+ <ItemGroup>
+ <DependencyFileCompilerOptions Include="CompilerOptions">
+ <DefineConstants>$(DefineConstants)</DefineConstants>
+ <LangVersion>$(LangVersion)</LangVersion>
+ <PlatformTarget>$(PlatformTarget)</PlatformTarget>
+ <AllowUnsafeBlocks>$(AllowUnsafeBlocks)</AllowUnsafeBlocks>
+ <TreatWarningsAsErrors>$(TreatWarningsAsErrors)</TreatWarningsAsErrors>
+ <Optimize>$(Optimize)</Optimize>
+ <AssemblyOriginatorKeyFile>$(AssemblyOriginatorKeyFile)</AssemblyOriginatorKeyFile>
+ <DelaySign>$(DelaySign)</DelaySign>
+ <PublicSign>$(DelaySign)</PublicSign>
+ <DebugType>$(DebugType)</DebugType>
+ <OutputType>$(OutputType)</OutputType>
+ <GenerateDocumentationFile>$(GenerateDocumentationFile)</GenerateDocumentationFile>
+ </DependencyFileCompilerOptions>
+ </ItemGroup>
+
+ </Target>
+
+ <UsingTask TaskName="FindItemsFromPackages" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="ComputeRefAssembliesToPublish"
+ Condition="'$(PreserveCompilationReferences)' == 'true'"
+ DependsOnTargets="ResolvePackageAssets;
+ _ParseTargetManifestFiles">
+
+ <FindItemsFromPackages Items="@(RuntimeCopyLocalItems)"
+ Packages="@(RuntimeStorePackages)">
+ <Output TaskParameter="ItemsFromPackages" ItemName="_RuntimeItemsInRuntimeStore"/>
+ </FindItemsFromPackages>
+
+ <ItemGroup>
+ <!--
+ Don't copy a compilation assembly if it's also a runtime assembly. There is no need to copy the same
+ assembly to the 'refs' folder, if it is already in the publish directory.
+ -->
+ <_RefAssembliesToExclude Include="@(_ResolvedCopyLocalPublishAssets->'%(FullPath)')" />
+ <!--
+ Similarly, don't copy a compilation assembly if it's also a runtime assembly that is in a runtime store.
+ It will be resolved from the runtime store directory at runtime.
+ -->
+ <_RefAssembliesToExclude Include="@(_RuntimeItemsInRuntimeStore)" />
+
+ <ResolvedFileToPublish Include="@(ReferencePath)" Exclude="@(_RefAssembliesToExclude)">
+ <RelativePath>$(RefAssembliesFolderName)\%(Filename)%(Extension)</RelativePath>
+ </ResolvedFileToPublish>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _CopyReferenceOnlyAssembliesForBuild
+
+ Copies reference assemblies that normally can't be resolved at runtime to the 'refs' folder in the build output.
+ This is necessary in order for the running app to resolve these reference assemblies.
+ ============================================================
+ -->
+ <Target Name="_CopyReferenceOnlyAssembliesForBuild"
+ Condition="'$(PreserveCompilationReferences)' == 'true'"
+ DependsOnTargets="_ComputeReferenceAssemblies"
+ AfterTargets="CopyFilesToOutputDirectory">
+
+ <Copy SourceFiles="@(_ReferenceOnlyAssemblies)"
+ DestinationFolder="$(OutDir)$(RefAssembliesFolderName)"
+ SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForCopyFilesToOutputDirectoryIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForCopyFilesToOutputDirectoryIfPossible)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+
+ </Copy>
+
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets
new file mode 100644
index 0000000000..b918c2bda2
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Publish.targets
@@ -0,0 +1,1021 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Publish.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <DefaultCopyToPublishDirectoryMetadata Condition="'$(DefaultCopyToPublishDirectoryMetadata)' == ''">true</DefaultCopyToPublishDirectoryMetadata>
+ <_GetChildProjectCopyToPublishDirectoryItems Condition="'$(_GetChildProjectCopyToPublishDirectoryItems)' == ''">true</_GetChildProjectCopyToPublishDirectoryItems>
+
+ <IsPublishable Condition="'$(IsPublishable)'==''">true</IsPublishable>
+ </PropertyGroup>
+
+ <ItemDefinitionGroup>
+ <ResolvedFileToPublish>
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+ </ItemDefinitionGroup>
+
+ <!--
+ ============================================================
+ Publish
+
+ The main publish entry point.
+ ============================================================
+ -->
+
+ <PropertyGroup>
+ <!-- We still need to resolve references even if we are not building during publish. -->
+ <!-- BuildOnlySettings are required for RAR to find satellites and dependencies -->
+ <_BeforePublishNoBuildTargets>
+ BuildOnlySettings;
+ _PreventProjectReferencesFromBuilding;
+ ResolveReferences;
+ PrepareResourceNames;
+ ComputeIntermediateSatelliteAssemblies;
+ ComputeEmbeddedApphostPaths;
+ </_BeforePublishNoBuildTargets>
+
+ <_CorePublishTargets>
+ PrepareForPublish;
+ ComputeAndCopyFilesToPublishDirectory;
+ GeneratePublishDependencyFile;
+ BundlePublishDirectory;
+ </_CorePublishTargets>
+
+ <_PublishNoBuildAlternativeDependsOn>$(_BeforePublishNoBuildTargets);$(_CorePublishTargets)</_PublishNoBuildAlternativeDependsOn>
+ </PropertyGroup>
+
+ <Target Name="_PublishBuildAlternative"
+ Condition="'$(NoBuild)' != 'true'"
+ DependsOnTargets="Build;$(_CorePublishTargets)" />
+
+ <Target Name="_PublishNoBuildAlternative"
+ Condition="'$(NoBuild)' == 'true'"
+ DependsOnTargets="$(_PublishNoBuildAlternativeDependsOn)" />
+
+ <Target Name="Publish"
+ Condition="$(IsPublishable) == 'true'"
+ DependsOnTargets="_PublishBuildAlternative;_PublishNoBuildAlternative" >
+
+ <!-- Ensure there is minimal verbosity output pointing to the publish directory and not just the
+ build step's minimal output. Otherwise there is no indication at minimal verbosity of where
+ the published assets were copied. -->
+ <Message Importance="High" Text="$(MSBuildProjectName) -> $([System.IO.Path]::GetFullPath('$(PublishDir)'))" />
+ </Target>
+
+ <!-- Don't let project reference resolution build project references in NoBuild case. -->
+ <Target Name="_PreventProjectReferencesFromBuilding">
+ <PropertyGroup>
+ <BuildProjectReferences>false</BuildProjectReferences>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ PrepareForPublish
+
+ Prepare the prerequisites for publishing.
+ ============================================================
+ -->
+ <Target Name="PrepareForPublish">
+
+ <NETSdkError Condition="'$(PublishSingleFile)' == 'true' And '$(_IsExecutable)' != 'true'"
+ ResourceName="CannotHaveSingleFileWithoutExecutable" />
+
+ <NETSdkWarning Condition="'$(PublishReadyToRun)' == 'true' And '$(_IsExecutable)' != 'true'"
+ ResourceName="CannotCreateReadyToRunImagesForLibProjects" />
+
+ <PropertyGroup>
+ <!-- Ensure any PublishDir has a trailing slash, so it can be concatenated -->
+ <PublishDir Condition="!HasTrailingSlash('$(PublishDir)')">$(PublishDir)\</PublishDir>
+ </PropertyGroup>
+
+ <MakeDir Directories="$(PublishDir)" />
+
+ </Target>
+
+ <!--
+ ============================================================
+ ComputeAndCopyFilesToPublishDirectory
+
+ Computes the list of all files to copy to the publish directory and then publishes them.
+ ============================================================
+ -->
+ <Target Name="ComputeAndCopyFilesToPublishDirectory"
+ DependsOnTargets="ComputeFilesToPublish;
+ CopyFilesToPublishDirectory" />
+
+ <!--
+ ============================================================
+ CopyFilesToPublishDirectory
+
+ Copy all build outputs, satellites and other necessary files to the publish directory.
+ When publishing to a single file, only those files that are not bundled are copied.
+ The remaining files are directly written to the bundle file.
+ ============================================================
+ -->
+ <Target Name="CopyFilesToPublishDirectory"
+ DependsOnTargets="_CopyResolvedFilesToPublishPreserveNewest;
+ _CopyResolvedFilesToPublishAlways" />
+
+ <!--
+ ============================================================
+ _CopyResolvedFilesToPublishPreserveNewest
+
+ Copy _ResolvedFileToPublishPreserveNewest items to the publish directory
+ (except files that will be bundled, during PublishSingleFile).
+ ============================================================
+ -->
+ <Target Name="_CopyResolvedFilesToPublishPreserveNewest"
+ DependsOnTargets="_ComputeResolvedFilesToPublishTypes"
+ Inputs="@(_ResolvedFileToPublishPreserveNewest)"
+ Outputs="@(_ResolvedFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')">
+
+ <ItemGroup>
+ <_ResolvedUnbundledFileToPublishPreserveNewest
+ Include="@(_ResolvedFileToPublishPreserveNewest)"
+ Condition="'$(PublishSingleFile)' != 'true' or
+ '%(_ResolvedFileToPublishPreserveNewest.ExcludeFromSingleFile)'=='true'" />
+ </ItemGroup>
+
+ <!--
+ PreserveNewest means that we will only copy the source to the destination if the source is newer.
+ SkipUnchangedFiles is not used for that purpose because it will copy if the source and destination
+ differ by size too. Instead, this target uses inputs and outputs to only copy when the source is newer.
+ -->
+ <Copy SourceFiles = "@(_ResolvedUnbundledFileToPublishPreserveNewest)"
+ DestinationFiles="@(_ResolvedUnbundledFileToPublishPreserveNewest->'$(PublishDir)%(RelativePath)')"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+
+ </Copy>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _CopyResolvedFilesToPublishAlways
+
+ Copy _ResolvedFileToPublishAlways items to the publish directory
+ (except files that will be bundled, during PublishSingleFile).
+ ============================================================
+ -->
+ <Target Name="_CopyResolvedFilesToPublishAlways"
+ DependsOnTargets="_ComputeResolvedFilesToPublishTypes">
+
+ <ItemGroup>
+ <_ResolvedUnbundledFileToPublishAlways
+ Include="@(_ResolvedFileToPublishAlways)"
+ Condition="'$(PublishSingleFile)' != 'true' or
+ '%(_ResolvedFileToPublishAlways.ExcludeFromSingleFile)'=='true'" />
+ </ItemGroup>
+
+ <!--
+ Use SkipUnchangedFiles to prevent unnecessary file copies. The copy will occur if the
+ destination doesn't exist, the source is newer than the destination, or if the source and
+ destination differ by file size.
+ -->
+ <Copy SourceFiles = "@(_ResolvedUnbundledFileToPublishAlways)"
+ DestinationFiles="@(_ResolvedUnbundledFileToPublishAlways->'$(PublishDir)%(RelativePath)')"
+ SkipUnchangedFiles="$(SkipCopyUnchangedFiles)"
+ OverwriteReadOnlyFiles="$(OverwriteReadOnlyFiles)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ UseHardlinksIfPossible="$(CreateHardLinksForPublishFilesIfPossible)"
+ UseSymboliclinksIfPossible="$(CreateSymbolicLinksForPublishFilesIfPossible)">
+
+ <Output TaskParameter="DestinationFiles" ItemName="FileWrites"/>
+
+ </Copy>
+ </Target>
+
+ <!--
+ ============================================================
+ CreateReadyToRunImages
+
+ Create ReadyToRun images for managed assemblies in _ResolvedFileToPublishAlways and _ResolvedFileToPublishPreserveNewest.
+ ============================================================
+ -->
+ <Target Name="CreateReadyToRunImages"
+ Condition="'$(_TargetFrameworkVersionWithoutV)' >= '3.0' And '$(PublishReadyToRun)' == 'true' And '$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_IsExecutable)' == 'true'"
+ DependsOnTargets="_PrepareForReadyToRunCompilation;
+ _CreateR2RImages;
+ _CreateR2RSymbols">
+
+ <NETSdkError Condition="'@(_ReadyToRunCompilationFailures)' != ''" ResourceName="ReadyToRunCompilationFailed" />
+
+ <NETSdkInformation Condition="'$(_ReadyToRunCompilerHasWarnings)' != ''" ResourceName="ReadyToRunCompilationHasWarnings_Info" />
+
+ <ItemGroup>
+ <!--
+ Note: we only remove the entries for the IL images and replace them with the entries for the R2R images.
+ We do not do the same for PDBs, because the native PDBs created by the R2R compiler complement the IL PDBs
+ and do not replace them. IL PDBs are still required for debugging. Native PDBs emitted by the R2R compiler are
+ only used for profiling purposes.
+ -->
+ <ResolvedFileToPublish Remove="@(_ReadyToRunCompileList)" />
+ <ResolvedFileToPublish Include="@(_ReadyToRunFilesToPublish)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _PrepareForReadyToRunCompilation
+
+ Prepare build for ReadyToRun compilations. Builds list of assemblies to compile, and computes paths to ReadyToRun compiler bits
+ ============================================================
+ -->
+ <UsingTask TaskName="PrepareForReadyToRunCompilation" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_PrepareForReadyToRunCompilation" DependsOnTargets="_ComputeManagedRuntimePackAssemblies;_ComputeAssembliesToPostprocessOnPublish">
+
+ <PropertyGroup>
+ <_ReadyToRunOutputPath>$(IntermediateOutputPath)R2R</_ReadyToRunOutputPath>
+ </PropertyGroup>
+
+ <MakeDir Directories="$(_ReadyToRunOutputPath)" />
+
+ <ItemGroup>
+ <_ReadyToRunImplementationAssemblies Include="@(ResolvedFileToPublish->WithMetadataValue('PostprocessAssembly', 'true'))" />
+ </ItemGroup>
+
+ <!-- Even if app is not self-contained, crossgen requires closure of implementation assemblies. Resolve conflicts
+ of the runtime pack assets as though we were copying them locally, and add them to the R2R implementation
+ assembly list. -->
+ <ItemGroup Condition="'$(SelfContained)' != 'true'">
+ <_ReadyToRunImplementationAssemblies Include="@(_ManagedRuntimePackAssembly)" ReferenceOnly="true" />
+ </ItemGroup>
+
+ <ResolvePackageFileConflicts Condition="'$(SelfContained)' != 'true'"
+ ReferenceCopyLocalPaths="@(_ReadyToRunImplementationAssemblies)">
+ <Output TaskParameter="ReferenceCopyLocalPathsWithoutConflicts" ItemName="_ReadyToRunImplementationAssembliesWithoutConflicts" />
+ </ResolvePackageFileConflicts>
+
+ <ItemGroup Condition="'$(SelfContained)' != 'true'">
+ <_ReadyToRunImplementationAssemblies Remove="@(_ReadyToRunImplementationAssemblies)" />
+ <_ReadyToRunImplementationAssemblies Include="@(_ReadyToRunImplementationAssembliesWithoutConflicts)" />
+ </ItemGroup>
+
+ <PrepareForReadyToRunCompilation RuntimePacks="@(ResolvedRuntimePack)"
+ TargetingPacks="@(ResolvedTargetingPack)"
+ RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)"
+ NETCoreSdkRuntimeIdentifier="$(NETCoreSdkRuntimeIdentifier)"
+ OutputPath="$(_ReadyToRunOutputPath)"
+ Assemblies="@(_ReadyToRunImplementationAssemblies)"
+ ExcludeList="@(PublishReadyToRunExclude)"
+ EmitSymbols="$(PublishReadyToRunEmitSymbols)"
+ IncludeSymbolsInSingleFile="$(IncludeSymbolsInSingleFile)">
+
+ <Output TaskParameter="CrossgenTool" ItemName="_CrossgenTool" />
+
+ <Output TaskParameter="ReadyToRunCompileList" ItemName="_ReadyToRunCompileList" />
+ <Output TaskParameter="ReadyToRunSymbolsCompileList" ItemName="_ReadyToRunSymbolsCompileList" />
+
+ <Output TaskParameter="ReadyToRunFilesToPublish" ItemName="_ReadyToRunFilesToPublish" />
+ <Output TaskParameter="ReadyToRunAssembliesToReference" ItemName="_ReadyToRunAssembliesToReference" />
+
+ </PrepareForReadyToRunCompilation>
+ </Target>
+
+ <!--
+ ============================================================
+ _CreateR2RImages
+
+ Compiles assemblies in the _ReadyToRunCompileList list into ReadyToRun images
+ ============================================================
+ -->
+ <UsingTask TaskName="RunReadyToRunCompiler" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_CreateR2RImages"
+ Inputs="@(_ReadyToRunCompileList)"
+ Outputs="%(_ReadyToRunCompileList.OutputR2RImage)">
+
+ <RunReadyToRunCompiler CrossgenTool="@(_CrossgenTool)"
+ ImplementationAssemblyReferences="@(_ReadyToRunAssembliesToReference)"
+ ShowCompilerWarnings="$(PublishReadyToRunShowWarnings)"
+ CompilationEntry="@(_ReadyToRunCompileList)"
+ ContinueOnError="ErrorAndContinue">
+ <Output TaskParameter="ExitCode" PropertyName="_ReadyToRunCompilerExitCode" />
+ <Output TaskParameter="WarningsDetected" PropertyName="_ReadyToRunWarningsDetected" />
+ </RunReadyToRunCompiler>
+
+ <PropertyGroup>
+ <!-- Use distinct property here as any of the invocations can set it -->
+ <_ReadyToRunCompilerHasWarnings Condition="'$(_ReadyToRunWarningsDetected)' == 'true'">true</_ReadyToRunCompilerHasWarnings>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <_ReadyToRunCompilationFailures Condition="'$(_ReadyToRunCompilerExitCode)' != '' And $(_ReadyToRunCompilerExitCode) != 0"
+ Include="@(_ReadyToRunCompileList)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _CreateR2RSymbols
+
+ Emit native symbols for ReadyToRun images in the _ReadyToRunSymbolsCompileList list
+ ============================================================
+ -->
+ <Target Name="_CreateR2RSymbols"
+ Inputs="@(_ReadyToRunSymbolsCompileList)"
+ Outputs="%(_ReadyToRunSymbolsCompileList.OutputPDBImage)">
+
+ <RunReadyToRunCompiler CrossgenTool="@(_CrossgenTool)"
+ ImplementationAssemblyReferences="@(_ReadyToRunAssembliesToReference)"
+ ShowCompilerWarnings="$(PublishReadyToRunShowWarnings)"
+ CompilationEntry="@(_ReadyToRunSymbolsCompileList)"
+ ContinueOnError="ErrorAndContinue">
+ <Output TaskParameter="ExitCode" PropertyName="_ReadyToRunCompilerExitCode" />
+ <Output TaskParameter="WarningsDetected" PropertyName="_ReadyToRunWarningsDetected" />
+ </RunReadyToRunCompiler>
+
+ <PropertyGroup>
+ <!-- Use distinct property here as any of the invocations can set it -->
+ <_ReadyToRunCompilerHasWarnings Condition="'$(_ReadyToRunWarningsDetected)' == 'true'">true</_ReadyToRunCompilerHasWarnings>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <_ReadyToRunCompilationFailures Condition="'$(_ReadyToRunCompilerExitCode)' != '' And $(_ReadyToRunCompilerExitCode) != 0"
+ Include="@(_ReadyToRunSymbolsCompileList)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeResolvedFilesToPublishTypes
+
+ Splits ResolvedFileToPublish items into 'PreserveNewest' and 'Always' buckets.
+ ============================================================
+ -->
+ <Target Name="_ComputeResolvedFilesToPublishTypes">
+ <ItemGroup>
+
+ <_ResolvedFileToPublishPreserveNewest Include="@(ResolvedFileToPublish)"
+ Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='PreserveNewest'" />
+
+ <_ResolvedFileToPublishAlways Include="@(ResolvedFileToPublish)"
+ Condition="'%(ResolvedFileToPublish.CopyToPublishDirectory)'=='Always'" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ ComputeFilesToPublish
+
+ Gathers all the files that need to be copied to the publish directory, including R2R and ILLinker transformations
+ ============================================================
+ -->
+ <Target Name="ComputeFilesToPublish"
+ DependsOnTargets="ComputeResolvedFilesToPublishList;
+ ILLink;
+ CreateReadyToRunImages">
+ </Target>
+
+ <PropertyGroup>
+ <CopyBuildOutputToPublishDirectory Condition="'$(CopyBuildOutputToPublishDirectory)'==''">true</CopyBuildOutputToPublishDirectory>
+ <CopyOutputSymbolsToPublishDirectory Condition="'$(CopyOutputSymbolsToPublishDirectory)'==''">true</CopyOutputSymbolsToPublishDirectory>
+ <IncludeSymbolsInSingleFile Condition="'$(IncludeSymbolsInSingleFile)' == ''">false</IncludeSymbolsInSingleFile>
+ </PropertyGroup>
+
+ <!--
+ ============================================================
+ ComputeResolvedFilesToPublishList
+
+ Gathers all the files that need to be copied to the publish directory.
+ ============================================================
+ -->
+ <Target Name="ComputeResolvedFilesToPublishList"
+ DependsOnTargets="_ComputeResolvedCopyLocalPublishAssets;
+ _ComputeCopyToPublishDirectoryItems;
+ ComputeRefAssembliesToPublish">
+ <ItemGroup>
+ <!-- Copy the build product (.dll or .exe). -->
+ <ResolvedFileToPublish Include="@(IntermediateAssembly)"
+ Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">
+ <RelativePath>@(IntermediateAssembly->'%(Filename)%(Extension)')</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the deps file if using the build deps file. -->
+ <ResolvedFileToPublish Include="$(ProjectDepsFilePath)"
+ Condition="'$(GenerateDependencyFile)' == 'true' and '$(_UseBuildDependencyFile)' == 'true'">
+ <RelativePath>$(ProjectDepsFileName)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the runtime config file. -->
+ <ResolvedFileToPublish Include="$(ProjectRuntimeConfigFilePath)"
+ Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true'">
+ <RelativePath>$(ProjectRuntimeConfigFileName)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the app.config (if any) -->
+ <ResolvedFileToPublish Include="@(AppConfigWithTargetPath)"
+ Condition="'$(CopyBuildOutputToPublishDirectory)' == 'true'">
+ <RelativePath>@(AppConfigWithTargetPath->'%(TargetPath)')</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the debug information file (.pdb), if any -->
+ <ResolvedFileToPublish Include="@(_DebugSymbolsIntermediatePath)"
+ Condition="'$(_DebugSymbolsProduced)'=='true' and '$(CopyOutputSymbolsToPublishDirectory)'=='true'">
+ <RelativePath>@(_DebugSymbolsIntermediatePath->'%(Filename)%(Extension)')</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ <ExcludeFromSingleFile Condition="'$(IncludeSymbolsInSingleFile)'!='true'">true</ExcludeFromSingleFile>
+ </ResolvedFileToPublish>
+
+ <!-- Copy satellite assemblies. -->
+ <ResolvedFileToPublish Include="@(IntermediateSatelliteAssembliesWithTargetPath)">
+ <RelativePath>%(IntermediateSatelliteAssembliesWithTargetPath.Culture)\%(Filename)%(Extension)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the resolved copy local publish assets. -->
+ <ResolvedFileToPublish Include="@(_ResolvedCopyLocalPublishAssets)">
+ <RelativePath>%(_ResolvedCopyLocalPublishAssets.DestinationSubDirectory)%(Filename)%(Extension)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy the xml documentation (if enabled) -->
+ <ResolvedFileToPublish Include="@(FinalDocFile)"
+ Condition="'$(PublishDocumentationFile)' == 'true'">
+ <RelativePath>@(FinalDocFile->'%(Filename)%(Extension)')</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+
+ <!-- Copy all PackAsTool shims (if any) -->
+ <ResolvedFileToPublish Include="@(_EmbeddedApphostPaths)">
+ <RelativePath>shims/%(_EmbeddedApphostPaths.ShimRuntimeIdentifier)/%(_EmbeddedApphostPaths.Filename)%(_EmbeddedApphostPaths.Extension)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ResolvedFileToPublish>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _ResolveCopyLocalAssetsForPublish
+ Resolves the assets from packages to copy locally for publish.
+ We can just use the build's copy local assets if we can reuse the build deps file.
+ ============================================================
+ -->
+ <UsingTask TaskName="ResolveCopyLocalAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_ResolveCopyLocalAssetsForPublish"
+ DependsOnTargets="ResolveLockFileCopyLocalFiles;
+ _ComputeUseBuildDependencyFile;
+ _DefaultMicrosoftNETPlatformLibrary;
+ ResolveRuntimePackAssets;
+ _ComputePackageReferencePublish">
+
+ <!-- For future: Delete ResolveCopyLocalAssets task. Need to figure out how to get correct DestinationSubPath for
+ PreserveStoreLayout without this task, and how to handle RuntimeStorePackages. -->
+ <ResolveCopyLocalAssets AssetsFilePath="$(ProjectAssetsFile)"
+ TargetFramework="$(TargetFrameworkMoniker)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ ExcludedPackageReferences="@(_ExcludeFromPublishPackageReference)"
+ RuntimeStorePackages="@(RuntimeStorePackages)"
+ PreserveStoreLayout="$(PreserveStoreLayout)"
+ ResolveRuntimeTargets="$(CopyLocalRuntimeTargetAssets)"
+ IsSelfContained="$(SelfContained)"
+ Condition="'$(PreserveStoreLayout)' == 'true' Or '@(RuntimeStorePackages)' != ''">
+ <Output TaskParameter="ResolvedAssets" ItemName="_ResolvedCopyLocalPublishAssets" />
+ </ResolveCopyLocalAssets>
+
+
+ <ItemGroup>
+ <_ResolvedCopyLocalPublishAssets Include="@(RuntimePackAsset)" Condition="'$(SelfContained)' == 'true'" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(_UseBuildDependencyFile)' != 'true'">
+ <!-- Remove the apphost executable from publish copy local assets; we will copy the generated apphost instead -->
+ <_ResolvedCopyLocalPublishAssets Remove="@(_NativeRestoredAppHostNETCore)" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(PreserveStoreLayout)' != 'true' And '@(RuntimeStorePackages)' == ''">
+ <_ResolvedCopyLocalPublishAssets Include="@(_ResolvedCopyLocalBuildAssets)"
+ Condition="'%(_ResolvedCopyLocalBuildAssets.CopyToPublishDirectory)' != 'false' "/>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _ParseTargetManifestFiles
+ Parses the $(TargetManifestFiles) which contains a list of files into @(RuntimeStorePackages) items
+ which describes which packages should be excluded from publish since they are contained in the runtime store.
+ ============================================================
+ -->
+ <UsingTask TaskName="ParseTargetManifests" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_ParseTargetManifestFiles"
+ Condition="'$(TargetManifestFiles)' != ''"
+ Returns="@(RuntimeStorePackages)">
+
+ <ParseTargetManifests TargetManifestFiles="$(TargetManifestFiles)">
+ <Output TaskParameter="RuntimeStorePackages" ItemName="RuntimeStorePackages"/>
+ </ParseTargetManifests>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _FilterSatelliteResourcesForPublish
+ Filters the resolved resource assets for build to the given resource languages.
+ ============================================================
+ -->
+ <Target Name="_FilterSatelliteResourcesForPublish"
+ Condition="'$(SatelliteResourceLanguages)' != ''">
+
+ <ItemGroup>
+ <_PublishSatelliteResources Include="@(_ResolvedCopyLocalPublishAssets)"
+ Condition="'%(_ResolvedCopyLocalPublishAssets.AssetType)' == 'resources'" />
+ </ItemGroup>
+
+ <JoinItems Left="@(_PublishSatelliteResources)" LeftKey="Culture" LeftMetadata="*"
+ Right="$(SatelliteResourceLanguages)" RightKey="" RightMetadata=""
+ ItemSpecToUse="Left">
+ <Output TaskParameter="JoinResult" ItemName="_FilteredPublishSatelliteResources" />
+ </JoinItems>
+
+ <ItemGroup Condition="'@(_PublishSatelliteResources)' != ''">
+ <_ResolvedCopyLocalPublishAssets Remove="@(_PublishSatelliteResources)" />
+ <_ResolvedCopyLocalPublishAssets Include="@(_FilteredPublishSatelliteResources)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeResolvedCopyLocalPublishAssets
+ Computes the files from both project and package references.
+ ============================================================
+ -->
+ <Target Name="_ComputeResolvedCopyLocalPublishAssets"
+ DependsOnTargets="_ResolveCopyLocalAssetsForPublish;
+ _FilterSatelliteResourcesForPublish">
+
+ <ItemGroup>
+ <_ResolvedCopyLocalPublishAssets Include="@(ReferenceCopyLocalPaths)"
+ Exclude="@(_ResolvedCopyLocalBuildAssets);@(RuntimePackAsset)"
+ Condition="'$(PublishReferencesDocumentationFiles)' == 'true' or '%(ReferenceCopyLocalPaths.Extension)' != '.xml'">
+ <DestinationSubPath>%(ReferenceCopyLocalPaths.DestinationSubDirectory)%(ReferenceCopyLocalPaths.Filename)%(ReferenceCopyLocalPaths.Extension)</DestinationSubPath>
+ </_ResolvedCopyLocalPublishAssets>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeCopyToPublishDirectoryItems
+ ============================================================
+ -->
+ <Target Name="_ComputeCopyToPublishDirectoryItems"
+ DependsOnTargets="GetCopyToPublishDirectoryItems">
+
+ <ItemGroup>
+ <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectoryAlways)">
+ <RelativePath>%(_SourceItemsToCopyToPublishDirectoryAlways.TargetPath)</RelativePath>
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ <IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectoryAlways.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
+ </ResolvedFileToPublish>
+
+ <ResolvedFileToPublish Include="@(_SourceItemsToCopyToPublishDirectory)">
+ <RelativePath>%(_SourceItemsToCopyToPublishDirectory.TargetPath)</RelativePath>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ <IsKeyOutput Condition="'%(_SourceItemsToCopyToPublishDirectory.FullPath)' == '$(AppHostIntermediatePath)'">True</IsKeyOutput>
+ </ResolvedFileToPublish>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ GetCopyToPublishDirectoryItems
+
+ Get all project items that may need to be transferred to the publish directory.
+ This includes baggage items from transitively referenced projects. It would appear
+ that this target computes full transitive closure of content items for all referenced
+ projects; however that is not the case. It only collects the content items from its
+ immediate children and not children of children.
+
+ See comment on GetCopyToOutputDirectoryItems, from which this logic was taken.
+ ============================================================
+ -->
+ <Target Name="GetCopyToPublishDirectoryItems"
+ Returns="@(AllPublishItemsFullPathWithTargetPath)"
+ KeepDuplicateOutputs=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' "
+ DependsOnTargets="AssignTargetPaths;
+ DefaultCopyToPublishDirectoryMetadata;
+ _SplitProjectReferencesByFileExistence;
+ _GetProjectReferenceTargetFrameworkProperties">
+
+
+ <!-- In the general case, clients need very little of the metadata which is generated by invoking this target on this project and its children. For those
+ cases, we can immediately discard the unwanted metadata, reducing memory usage, particularly in very large and interconnected systems of projects.
+ However, if some client does require the original functionality, it is sufficient to set MSBuildDisableGetCopyToPublishDirectoryItemsOptimization to
+ a non-empty value and the original behavior will be restored. -->
+ <PropertyGroup Condition=" '$(MSBuildDisableGetCopyToPublishDirectoryItemsOptimization)' == '' ">
+ <_GCTPDIKeepDuplicates>false</_GCTPDIKeepDuplicates>
+ <_GCTPDIKeepMetadata>CopyToPublishDirectory;ExcludeFromSingleFile;TargetPath</_GCTPDIKeepMetadata>
+ </PropertyGroup>
+
+ <!-- Get items from child projects first. -->
+ <MSBuild Projects="@(_MSBuildProjectReferenceExistent)"
+ Targets="GetCopyToPublishDirectoryItems"
+ BuildInParallel="$(BuildInParallel)"
+ Properties="%(_MSBuildProjectReferenceExistent.SetConfiguration); %(_MSBuildProjectReferenceExistent.SetPlatform); %(_MSBuildProjectReferenceExistent.SetTargetFramework)"
+ Condition="'@(_MSBuildProjectReferenceExistent)' != '' and '$(_GetChildProjectCopyToPublishDirectoryItems)' == 'true' and '%(_MSBuildProjectReferenceExistent.Private)' != 'false'"
+ ContinueOnError="$(ContinueOnError)"
+ RemoveProperties="%(_MSBuildProjectReferenceExistent.GlobalPropertiesToRemove)">
+
+ <Output TaskParameter="TargetOutputs" ItemName="_AllChildProjectPublishItemsWithTargetPath"/>
+
+ </MSBuild>
+
+ <!-- Target outputs must be full paths because they will be consumed by a different project. -->
+ <ItemGroup>
+ <_SourceItemsToCopyToPublishDirectoryAlways KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' "
+ KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"
+ Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='Always'"/>
+
+ <_SourceItemsToCopyToPublishDirectory KeepDuplicates=" '$(_GCTPDIKeepDuplicates)' != 'false' "
+ KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_AllChildProjectPublishItemsWithTargetPath->'%(FullPath)')"
+ Condition="'%(_AllChildProjectPublishItemsWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <!-- Remove items which we will never again use - they just sit around taking up memory otherwise -->
+ <ItemGroup>
+ <_AllChildProjectPublishItemsWithTargetPath Remove="@(_AllChildProjectPublishItemsWithTargetPath)"/>
+ </ItemGroup>
+
+ <!-- Get items from this project last so that they will be copied last. -->
+ <ItemGroup>
+ <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(ContentWithTargetPath->'%(FullPath)')"
+ Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='Always'"/>
+ <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(ContentWithTargetPath->'%(FullPath)')"
+ Condition="'%(ContentWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(EmbeddedResource->'%(FullPath)')"
+ Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='Always'"/>
+ <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(EmbeddedResource->'%(FullPath)')"
+ Condition="'%(EmbeddedResource.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <_CompileItemsToPublish Include="@(Compile->'%(FullPath)')"
+ Condition="'%(Compile.CopyToPublishDirectory)'=='Always' or '%(Compile.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <AssignTargetPath Files="@(_CompileItemsToPublish)" RootFolder="$(MSBuildProjectDirectory)">
+ <Output TaskParameter="AssignedFiles" ItemName="_CompileItemsToPublishWithTargetPath" />
+ </AssignTargetPath>
+
+ <ItemGroup>
+ <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_CompileItemsToPublishWithTargetPath)"
+ Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='Always'"/>
+ <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_CompileItemsToPublishWithTargetPath)"
+ Condition="'%(_CompileItemsToPublishWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <_SourceItemsToCopyToPublishDirectoryAlways KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_NoneWithTargetPath->'%(FullPath)')"
+ Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='Always'"/>
+ <_SourceItemsToCopyToPublishDirectory KeepMetadata="$(_GCTPDIKeepMetadata)"
+ Include="@(_NoneWithTargetPath->'%(FullPath)')"
+ Condition="'%(_NoneWithTargetPath.CopyToPublishDirectory)'=='PreserveNewest'"/>
+ </ItemGroup>
+
+ <ItemGroup>
+ <AllPublishItemsFullPathWithTargetPath Include="@(_SourceItemsToCopyToPublishDirectoryAlways->'%(FullPath)');@(_SourceItemsToCopyToPublishDirectory->'%(FullPath)')"/>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ DefaultCopyToPublishDirectoryMetadata
+
+ If CopyToPublishDirectory isn't set on these items, the value should be taken from CopyToOutputDirectory.
+ This way, projects can just set "CopyToOutputDirectory = Always/PreserveNewest" and by default the item will be copied
+ to both the build output and publish directories.
+ ============================================================
+ -->
+ <Target Name="DefaultCopyToPublishDirectoryMetadata"
+ DependsOnTargets="AssignTargetPaths"
+ Condition=" '$(DefaultCopyToPublishDirectoryMetadata)' == 'true' ">
+
+ <ItemGroup>
+ <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </ContentWithTargetPath>
+ <ContentWithTargetPath Condition="'%(ContentWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(ContentWithTargetPath.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </ContentWithTargetPath>
+
+ <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='Always' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </EmbeddedResource>
+ <EmbeddedResource Condition="'%(EmbeddedResource.CopyToOutputDirectory)'=='PreserveNewest' and '%(EmbeddedResource.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </EmbeddedResource>
+
+ <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='Always' and '%(Compile.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </Compile>
+ <Compile Condition="'%(Compile.CopyToOutputDirectory)'=='PreserveNewest' and '%(Compile.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </Compile>
+
+ <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </_NoneWithTargetPath>
+ <_NoneWithTargetPath Condition="'%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest' and '%(_NoneWithTargetPath.CopyToPublishDirectory)' == ''">
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </_NoneWithTargetPath>
+
+ </ItemGroup>
+ </Target>
+
+ <PropertyGroup Condition="'$(SelfContained)' == 'true'">
+ <_ComputeManagedRuntimePackAssembliesIfSelfContained>_ComputeManagedRuntimePackAssemblies</_ComputeManagedRuntimePackAssembliesIfSelfContained>
+ </PropertyGroup>
+
+ <!-- Determine the managed assembly subset of ResolvedFileToPublish that should be post-processed by linker, and ready to run compilation -->
+ <Target Name="_ComputeAssembliesToPostprocessOnPublish"
+ DependsOnTargets="_ComputeUserRuntimeAssemblies;$(_ComputeManagedRuntimePackAssembliesIfSelfContained)">
+
+ <!--
+ Default set of files to post-process correspond to the items that would be designated
+ as managed runtime assemblies in .deps.json, and published to root of the application.
+ RuntimeTargets and satellite assemblies are excluded. Currently, both linker and ready
+ to run require a RID, so there will not be RuntimeTargets. Linker could conceptually
+ operate without a RID, but would not know how to handle multiple assemblies with same
+ identity.
+ -->
+ <ItemGroup>
+ <!-- Assemblies from packages -->
+ <_ManagedRuntimeAssembly Include="@(RuntimeCopyLocalItems)" />
+
+ <!-- Assemblies from other references -->
+ <_ManagedRuntimeAssembly Include="@(UserRuntimeAssembly)" />
+
+ <!-- Assembly produced by this project -->
+ <_ManagedRuntimeAssembly Include="@(IntermediateAssembly)" />
+ </ItemGroup>
+
+ <!-- Assemblies from runtime packs for self-contained apps -->
+ <ItemGroup Condition="'$(SelfContained)' == 'true'">
+ <_ManagedRuntimeAssembly Include="@(_ManagedRuntimePackAssembly)" />
+ </ItemGroup>
+
+ <!--
+ Match above with ResolvedFileToPublish. Some of above would have been excluded from publish in
+ various ways and should be excluded from the list of files to postprocess as well. Furthermore,
+ the metadata must match ResolvedFileToPublish as the tools modify or remove these items in that
+ list to implement their post-processing.
+ -->
+ <JoinItems Left="@(_ManagedRuntimeAssembly)" Right="@(ResolvedFileToPublish)" RightMetadata="*">
+ <Output TaskParameter="JoinResult" ItemName="_AssemblyToPostprocessOnPublish" />
+ </JoinItems>
+
+ <!--
+ Set PostprocessAssembly=true metadata on ResolvedFileToPublish, which will be honored by linker
+ and crossgen.
+
+ Assemblies injected into ResolvedFileToPublish outside the set above (such as razor views) are
+ responsible for setting this metadata to opt in to post-processing.
+ -->
+ <ItemGroup>
+ <ResolvedFileToPublish Remove="@(_AssemblyToPostprocessOnPublish)" />
+ <ResolvedFileToPublish Include="@(_AssemblyToPostprocessOnPublish)" PostprocessAssembly="true" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="_ComputeManagedRuntimePackAssemblies" Returns="@(_ManagedRuntimePackAssembly)">
+ <ItemGroup>
+ <!-- Special case for System.Private.Corelib due to https://github.com/dotnet/core-setup/issues/7728 -->
+ <_ManagedRuntimePackAssembly Include="@(RuntimePackAsset)"
+ Condition="'%(RuntimePackAsset.AssetType)' == 'runtime'
+ or '%(RuntimePackAsset.Filename)' == 'System.Private.Corelib'" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="_ComputeUseBuildDependencyFile"
+ DependsOnTargets="_ComputePackageReferencePublish;
+ _ParseTargetManifestFiles">
+ <!-- Check to see whether we can re-use the .deps.json file from the build for publish, or whether we have to
+ generate a different one. -->
+ <PropertyGroup>
+ <_UseBuildDependencyFile Condition="'@(_ExcludeFromPublishPackageReference)' == '' and
+ '@(RuntimeStorePackages)' == '' and
+ '$(PreserveStoreLayout)' != 'true' and
+ '$(PublishTrimmed)' != 'true'">true</_UseBuildDependencyFile>
+ </PropertyGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ BundlePublishDirectory
+
+ Bundle the _ResolvedFileToPublish* items one file in PublishDir
+ (except those marked ExcludeFromSingleFile)
+ ============================================================
+ -->
+ <Target Name="_ComputeFilesToBundle"
+ Condition="'$(PublishSingleFile)' == 'true'">
+
+ <ItemGroup>
+ <_FilesToBundle Include="@(_ResolvedFileToPublishPreserveNewest)"
+ Condition="'%(_ResolvedFileToPublishPreserveNewest.ExcludeFromSingleFile)' != 'true'"/>
+ <_FilesToBundle Include="@(_ResolvedFileToPublishAlways)"
+ Condition="'%(_ResolvedFileToPublishAlways.ExcludeFromSingleFile)' != 'true'"/>
+ </ItemGroup>
+
+ </Target>
+
+ <UsingTask TaskName="GenerateBundle" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="BundlePublishDirectory"
+ Condition="'$(PublishSingleFile)' == 'true'"
+ DependsOnTargets="_ComputeFilesToBundle"
+ Inputs="@(_FilesToBundle)"
+ Outputs="$(PublishDir)$(AssemblyName)$(_NativeExecutableExtension)">
+
+ <GenerateBundle FilesToBundle="@(_FilesToBundle)"
+ AppHostName="$(AssemblyName)$(_NativeExecutableExtension)"
+ IncludeSymbols="$(IncludeSymbolsInSingleFile)"
+ OutputDir="$(PublishDir)"
+ ShowDiagnosticOutput="false"/>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _GeneratePublishDependencyFile
+ Generates the $(project).deps.json file for a published app
+ ============================================================
+ -->
+ <Target Name="GeneratePublishDependencyFile"
+ DependsOnTargets="_ComputeUseBuildDependencyFile;
+ _DefaultMicrosoftNETPlatformLibrary;
+ _HandlePackageFileConflicts;
+ _HandlePackageFileConflictsForPublish;
+ _ComputeReferenceAssemblies;
+ _ComputeUserRuntimeAssemblies;
+ ResolveRuntimePackAssets;
+ _ComputePackageReferencePublish"
+ Condition="'$(GenerateDependencyFile)' == 'true' and '$(_UseBuildDependencyFile)' != 'true'">
+
+ <PropertyGroup>
+ <PublishDepsFilePath Condition=" '$(PublishDepsFilePath)' == '' And '$(PublishSingleFile)' != 'true'">$(PublishDir)$(ProjectDepsFileName)</PublishDepsFilePath>
+ <PublishDepsFilePath Condition=" '$(PublishDepsFilePath)' == '' And '$(PublishSingleFile)' == 'true'">$(IntermediateOutputPath)$(ProjectDepsFileName)</PublishDepsFilePath>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ResolvedCompileFileDefinitions Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' == 'Reference'" />
+ <RuntimeTargetsCopyLocalItems Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ <RuntimePackAsset Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+
+ <_ResolvedNuGetFilesForPublish Include="@(NativeCopyLocalItems)" Condition="'%(NativeCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
+ <_ResolvedNuGetFilesForPublish Include="@(ResourceCopyLocalItems)" Condition="'%(ResourceCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
+ <_ResolvedNuGetFilesForPublish Include="@(RuntimeCopyLocalItems)" Condition="'%(RuntimeCopyLocalItems.CopyToPublishDirectory)' != 'false'" />
+ <_ResolvedNuGetFilesForPublish Remove="@(_PublishConflictPackageFiles)" Condition="'%(_PublishConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ </ItemGroup>
+
+ <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)"
+ AssetsFilePath="$(ProjectAssetsFile)"
+ DepsFilePath="$(PublishDepsFilePath)"
+ TargetFramework="$(TargetFrameworkMoniker)"
+ AssemblyName="$(AssemblyName)"
+ AssemblyExtension="$(TargetExt)"
+ AssemblyVersion="$(Version)"
+ AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)"
+ ReferencePaths="@(ReferencePath)"
+ ReferenceDependencyPaths="@(ReferenceDependencyPaths)"
+ ReferenceSatellitePaths="@(ReferenceSatellitePaths)"
+ ReferenceAssemblies="@(_ReferenceAssemblies)"
+ RuntimePackAssets="@(RuntimePackAsset)"
+ IncludeMainProject="$(IncludeMainProjectInDepsFile)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ CompilerOptions="@(DependencyFileCompilerOptions)"
+ RuntimeStorePackages="@(RuntimeStorePackages)"
+ CompileReferences="@(ResolvedCompileFileDefinitions)"
+ ResolvedNuGetFiles="@(_ResolvedNuGetFilesForPublish)"
+ ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)"
+ UserRuntimeAssemblies="@(UserRuntimeAssembly)"
+ IsSelfContained="$(SelfContained)"
+ IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)"/>
+
+ <ItemGroup>
+ <_FilesToBundle Include="$(PublishDepsFilePath)" Condition="'$(PublishSingleFile)' == 'true'">
+ <RelativePath>$(ProjectDepsFileName)</RelativePath>
+ </_FilesToBundle>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ ComputeEmbeddedApphostPaths
+
+ When no build flag is set, EmbeddedApphostPaths is not available. Compute EmbeddedApphostPaths is required to find build asset.
+ ============================================================
+ -->
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetEmbeddedApphostPaths"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="ComputeEmbeddedApphostPaths">
+
+ <ItemGroup>
+ <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)"/>
+ </ItemGroup>
+
+ <GetEmbeddedApphostPaths
+ PackagedShimOutputDirectory="$(PackagedShimOutputRootDirectory)/shims/$(TargetFramework)"
+ ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
+ ToolCommandName="$(ToolCommandName)"
+ >
+
+ <Output TaskParameter="EmbeddedApphostPaths" ItemName="_EmbeddedApphostPaths" />
+ </GetEmbeddedApphostPaths>
+
+ </Target>
+
+ <!--
+ ============================================================
+ PublishItemsOutputGroup
+
+ Emit an output group containing all files that get published. This will be consumed by VS installer projects.
+ ============================================================
+ -->
+ <PropertyGroup>
+ <PublishItemsOutputGroupDependsOn>
+ $(PublishItemsOutputGroupDependsOn);
+ ResolveReferences;
+ ComputeFilesToPublish;
+ </PublishItemsOutputGroupDependsOn>
+ </PropertyGroup>
+
+ <Target Name="PublishItemsOutputGroup" DependsOnTargets="$(PublishItemsOutputGroupDependsOn)" Returns="@(PublishItemsOutputGroupOutputs)">
+ <ItemGroup>
+ <PublishItemsOutputGroupOutputs Condition="'$(GenerateDependencyFile)' == 'true' and '$(_UseBuildDependencyFile)' != 'true'"
+ Include="$(ProjectDepsFilePath)"
+ TargetPath="$(ProjectDepsFileName)" />
+ <PublishItemsOutputGroupOutputs Include="@(ResolvedFileToPublish->'%(FullPath)')"
+ TargetPath="%(ResolvedFileToPublish.RelativePath)"
+ IsKeyOutput="%(ResolvedFileToPublish.IsKeyOutput)"
+ OutputGroup="PublishItemsOutputGroup" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ This target exists for back-compat with Azure Functions SDK: https://github.com/dotnet/cli/issues/10363
+ Because build copy-local now behaves the same as publish with respect to package dependency resolution,
+ the Azure Functions SDK doesn't need to resolve publish assets for build.
+ TODO: Remove this target when no longer needed as a workaround.
+ -->
+ <Target Name="RunResolvePublishAssemblies" />
+
+ <!--
+ ============================================================
+ _CheckForLanguageAndPublishFeatureCombinationSupport
+
+ Block unsupported language and feature combination.
+ ============================================================
+ -->
+ <Target Name="_CheckForLanguageAndPublishFeatureCombinationSupport"
+ BeforeTargets="Publish;PrepareForPublish">
+
+ <NETSdkError Condition="'$(Language)' == 'C++' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
+ ResourceName="NoSupportCppPublishDotnetCore" />
+
+ </Target>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets
new file mode 100644
index 0000000000..2a2f130317
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.RuntimeIdentifierInference.targets
@@ -0,0 +1,215 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.RuntimeIdentifierInference.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ .NETFramework cannot load native package dependencies dynamically
+ based on the current architecture. We have must have a RID to
+ resolve and copy native dependencies to the output directory.
+
+ When building a .NETFramework exe on Windows and not given a RID,
+ we'll pick either win7-x64 or win7-x86 (based on PlatformTarget)
+ if we're not given an explicit RID. However, if after resolving
+ NuGet assets we find no copy-local native dependencies, we will
+ emit the binary as AnyCPU.
+
+ Note that we must set the RID here early (to be seen during NuGet
+ restore) in order for the project.assets.json to include the
+ native dependencies that will let us make the final call on
+ AnyCPU or platform-specific.
+
+ This allows these common cases to work without requiring mention
+ of RuntimeIdentifier in the user project PlatformTarget:
+
+ 1. Building an AnyCPU .NETFramework application on any host OS
+ with no native NuGet dependencies. (*)
+
+ 2. Building an x86 or x64 NETFramework application on and for
+ Windows with native NuGet dependencies that do not require
+ greater than win7.
+
+ However, any other combination of host operating system, CPU
+ architecture, and minimum Windows version will require some
+ manual intervention in the project file to set up the right
+ RID. (**)
+
+ (*) Building NET4x from non-Windows is still not fully supported:
+ https://github.com/dotnet/sdk/issues/335) The point above is
+ that this code would not have to change to make the first
+ scenario work on non-Windows hosts.
+
+ (**) https://github.com/dotnet/sdk/issues/840 tracks improving
+ the default RID selection here to make more non-AnyCPU scenarios
+ work without user intervention. The current static evaluation
+ requirement limits us.
+ -->
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and
+ '$(HasRuntimeOutput)' == 'true' and
+ '$(OS)' == 'Windows_NT' and
+ '$(RuntimeIdentifier)' == ''">
+ <_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
+ <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x64'">win7-x64</RuntimeIdentifier>
+ <RuntimeIdentifier Condition="'$(PlatformTarget)' == 'x86' or '$(PlatformTarget)' == ''">win7-x86</RuntimeIdentifier>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(PlatformTarget)' == ''">
+ <_UsingDefaultPlatformTarget>true</_UsingDefaultPlatformTarget>
+ </PropertyGroup>
+
+ <!-- Determine PlatformTarget (if not already set) from runtime identifier. -->
+ <Choose>
+ <When Condition="'$(PlatformTarget)' != '' or '$(RuntimeIdentifier)' == ''" />
+
+ <When Condition="$(RuntimeIdentifier.EndsWith('-x86')) or $(RuntimeIdentifier.Contains('-x86-'))">
+ <PropertyGroup>
+ <PlatformTarget>x86</PlatformTarget>
+ </PropertyGroup>
+ </When>
+
+ <When Condition="$(RuntimeIdentifier.EndsWith('-x64')) or $(RuntimeIdentifier.Contains('-x64-'))">
+ <PropertyGroup>
+ <PlatformTarget>x64</PlatformTarget>
+ </PropertyGroup>
+ </When>
+
+ <When Condition="$(RuntimeIdentifier.EndsWith('-arm')) or $(RuntimeIdentifier.Contains('-arm-'))">
+ <PropertyGroup>
+ <PlatformTarget>arm</PlatformTarget>
+ </PropertyGroup>
+ </When>
+
+ <!-- NOTE: PlatformTarget=arm64 is not currently supported and therefore no inference of that here. -->
+ <Otherwise>
+ <PropertyGroup>
+ <PlatformTarget>AnyCPU</PlatformTarget>
+ </PropertyGroup>
+ </Otherwise>
+ </Choose>
+
+ <!--
+ SelfContained was not an option in .NET Core SDK 1.0.
+ Default SelfContained based on the RuntimeIdentifier, so projects don't have to explicitly set SelfContained.
+ This avoids a breaking change from 1.0 behavior.
+ -->
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'">
+ <SelfContained Condition="'$(SelfContained)' == '' and '$(RuntimeIdentifier)' != ''">true</SelfContained>
+ <SelfContained Condition="'$(SelfContained)' == ''">false</SelfContained>
+ <UseAppHost Condition="'$(UseAppHost)' == '' and
+ ('$(SelfContained)' == 'true' or
+ ('$(RuntimeIdentifier)' != '' and '$(_TargetFrameworkVersionWithoutV)' >= '2.1') or
+ '$(_TargetFrameworkVersionWithoutV)' >= '3.0')">true</UseAppHost>
+ <UseAppHost Condition="'$(UseAppHost)' == ''">false</UseAppHost>
+ </PropertyGroup>
+
+ <!-- Only use the default apphost if building without a RID and without a deps file path (used by GenerateDeps.proj for CLI tools). -->
+ <PropertyGroup Condition="'$(DefaultAppHostRuntimeIdentifier)' == '' and
+ '$(RuntimeIdentifier)' == '' and
+ (('$(UseAppHost)' == 'true' and '$(ProjectDepsFilePath)' == '') or
+ ('$(EnableComHosting)' == 'true' and '$(_IsExecutable)' != 'true') or
+ '$(UseIJWHost)' == 'true')">
+ <DefaultAppHostRuntimeIdentifier>$(NETCoreSdkRuntimeIdentifier)</DefaultAppHostRuntimeIdentifier>
+ <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x64'">win-x64</DefaultAppHostRuntimeIdentifier>
+ <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'x86'">win-x86</DefaultAppHostRuntimeIdentifier>
+ <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM'">win-arm</DefaultAppHostRuntimeIdentifier>
+ <DefaultAppHostRuntimeIdentifier Condition="$(DefaultAppHostRuntimeIdentifier.StartsWith('win')) and '$(PlatformTarget)' == 'ARM64'">win-arm64</DefaultAppHostRuntimeIdentifier>
+ </PropertyGroup>
+
+ <Target Name="_CheckForUnsupportedAppHostUsage"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(HasRuntimeOutput)' == 'true'">
+
+ <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(RuntimeIdentifier)' == ''"
+ ResourceName="CannotHaveSelfContainedWithoutRuntimeIdentifier" />
+
+ <NETSdkError Condition="'$(SelfContained)' == 'true' and '$(UseAppHost)' != 'true'"
+ ResourceName="CannotUseSelfContainedWithoutAppHost" />
+
+ <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(RuntimeIdentifier)' == ''"
+ ResourceName="CannotHaveSingleFileWithoutRuntimeIdentifier" />
+
+ <NETSdkError Condition="'$(PublishSingleFile)' == 'true' and '$(UseAppHost)' != 'true'"
+ ResourceName="CannotHaveSingleFileWithoutAppHost" />
+
+ <NETSdkError Condition="'$(SelfContained)' != 'true' and '$(UseAppHost)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'"
+ ResourceName="FrameworkDependentAppHostRequiresVersion21" />
+
+ </Target>
+
+ <Target Name="_CheckForMismatchingPlatform"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
+ Condition="'$(RuntimeIdentifier)' != '' and '$(PlatformTarget)' != ''">
+
+ <NETSdkError Condition="'$(PlatformTarget)' != 'AnyCPU' and !$(RuntimeIdentifier.ToUpperInvariant().Contains($(PlatformTarget.ToUpperInvariant())))"
+ ResourceName="CannotHaveRuntimeIdentifierPlatformMismatchPlatformTarget"
+ FormatArguments="$(RuntimeIdentifier);$(PlatformTarget)" />
+
+ </Target>
+
+ <Target Name="_CheckForLanguageAndFeatureCombinationSupport"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform;ProcessFrameworkReferences">
+
+ <NETSdkError Condition="'$(Language)' == 'C++' and $(OutputType) != 'library' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'"
+ ResourceName="NoSupportCppNonDynamicLibraryDotnetCore" />
+
+ <NETSdkError Condition="'$(Language)' == 'C++' and $(EnableComHosting) == 'true'"
+ ResourceName="NoSupportCppEnableComHosting" />
+
+ </Target>
+
+ <Target Name="_CheckForNETCoreSdkIsPreview"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
+ Condition=" '$(_NETCoreSdkIsPreview)' == 'true' AND '$(SuppressNETCoreSdkPreviewMessage)' != 'true' ">
+ <ShowPreviewMessage />
+ </Target>
+
+ <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
+ Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
+ <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'">
+ <!-- Projects can opt out of having the RID appended to the output path by setting this to false. -->
+ <AppendRuntimeIdentifierToOutputPath Condition="'$(AppendRuntimeIdentifierToOutputPath)' == ''">true</AppendRuntimeIdentifierToOutputPath>
+ </PropertyGroup>
+
+ <!--
+ Append $(RuntimeIdentifier) directory to output and intermediate paths to prevent bin clashes between
+ targets.
+
+ But do not append the implicit default runtime identifier for .NET Framework apps as that would
+ append a RID the user never mentioned in the path and do so even in the AnyCPU case.
+ -->
+ <PropertyGroup Condition="'$(AppendRuntimeIdentifierToOutputPath)' == 'true' and '$(RuntimeIdentifier)' != '' and '$(_UsingDefaultRuntimeIdentifier)' != 'true'">
+ <IntermediateOutputPath>$(IntermediateOutputPath)$(RuntimeIdentifier)\</IntermediateOutputPath>
+ <OutputPath>$(OutputPath)$(RuntimeIdentifier)\</OutputPath>
+ </PropertyGroup>
+
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.GetDefaultPlatformTargetForNetFramework"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+
+ <!--
+ Switch our default .NETFramework CPU architecture choice back to AnyCPU before
+ compiling the exe if no copy-local native dependencies were resolved from NuGet
+ -->
+ <Target Name="AdjustDefaultPlatformTargetForNetFrameworkExeWithNoNativeCopyLocalItems"
+ AfterTargets="ResolvePackageAssets"
+ BeforeTargets="CoreCompile"
+ Condition="'$(_UsingDefaultPlatformTarget)' == 'true' and
+ '$(_UsingDefaultRuntimeIdentifier)' == 'true'">
+
+ <GetDefaultPlatformTargetForNetFramework PackageDependencies="@(PackageDependencies)"
+ NativeCopyLocalItems="@(NativeCopyLocalItems)">
+
+ <Output TaskParameter="DefaultPlatformTarget" PropertyName="PlatformTarget" />
+
+ </GetDefaultPlatformTargetForNetFramework>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommon.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommon.targets
new file mode 100644
index 0000000000..d1190b5f4b
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommon.targets
@@ -0,0 +1,198 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.BeforeCommon.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- For projects that aren't using Microsoft.NET.Sdk, these props files won't have been imported yet.
+ So import them here. -->
+ <ImportGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">
+ <Import Project="Microsoft.NET.Sdk.DefaultItems.props" />
+ <Import Project="Microsoft.NET.SupportedTargetFrameworks.props" />
+ </ImportGroup>
+
+ <PropertyGroup>
+ <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true</_IsExecutable>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(HasRuntimeOutput)' == ''">
+ <HasRuntimeOutput>$(_IsExecutable)</HasRuntimeOutput>
+ <_UsingDefaultForHasRuntimeOutput>true</_UsingDefaultForHasRuntimeOutput>
+ </PropertyGroup>
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultAssemblyInfo.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'"/>
+
+ <!-- Set default intermediate and output paths -->
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultOutputPaths.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'"/>
+
+ <!-- Before any additional SDK targets are imported, import the publish profile.
+ This allows the publish profile to set properties like RuntimeIdentifier and them be
+ respected by the SDK. -->
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.ImportPublishProfile.targets"
+ Condition="'$(PublishProfileImported)' != 'true'"/>
+
+ <!--
+ Expand TargetFramework to TargetFrameworkIdentifier and TargetFrameworkVersion,
+ and adjust intermediate and output paths to include it.
+ -->
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.TargetFrameworkInference.targets" />
+
+ <!-- For .NET Framework, reference core assemblies -->
+ <PropertyGroup>
+ <_TargetFrameworkVersionWithoutV>$(TargetFrameworkVersion.TrimStart('vV'))</_TargetFrameworkVersionWithoutV>
+ </PropertyGroup>
+
+ <!--
+ Use RuntimeIdentifier to determine PlatformTarget.
+ Also, enforce that RuntimeIdentifier is always specified for .NETFramework executables.
+ -->
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.RuntimeIdentifierInference.targets" />
+
+ <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == ''">
+ <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</_IsNETCoreOrNETStandard>
+ <_IsNETCoreOrNETStandard Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard'">true</_IsNETCoreOrNETStandard>
+ </PropertyGroup>
+
+ <!-- Unification / automatic binding redirect logic -->
+ <PropertyGroup>
+ <DesignTimeAutoUnify Condition="'$(DesignTimeAutoUnify)' == ''">true</DesignTimeAutoUnify>
+ <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and $(OutputType) == 'Library'">true</AutoUnifyAssemblyReferences>
+ <AutoUnifyAssemblyReferences Condition="'$(AutoUnifyAssemblyReferences)' == '' and '$(_IsNETCoreOrNETStandard)' == 'true'">true</AutoUnifyAssemblyReferences>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(HasRuntimeOutput)' == 'true'">
+ <AutoGenerateBindingRedirects Condition="'$(AutoGenerateBindingRedirects)' == ''">true</AutoGenerateBindingRedirects>
+ </PropertyGroup>
+
+ <!-- Default settings for .NET Core and .NET Standard build logic -->
+ <PropertyGroup Condition="'$(_IsNETCoreOrNETStandard)' == 'true'">
+ <GenerateDependencyFile Condition=" '$(GenerateDependencyFile)' == '' and '$(Language)' != 'C++' ">true</GenerateDependencyFile>
+
+ <!-- Assembly and file versions of runtime assets should be written to the deps.json by default, to support
+ runtime minor version roll-forward: https://github.com/dotnet/core-setup/issues/3546 -->
+ <IncludeFileVersionsInDependencyFile Condition="'$(IncludeFileVersionsInDependencyFile)' == ''">true</IncludeFileVersionsInDependencyFile>
+
+ <!-- Force .dll extension for .NETCoreApp and .NETStandard projects even if output type is exe. -->
+ <TargetExt Condition="'$(TargetExt)' == ''">.dll</TargetExt>
+
+ <!-- Disable the use of FrameworkPathOverride in Microsoft.Common.CurrentVersion.targets which can slow down evaluation. FrameworkPathOverride
+ is not needed for NETStandard or NETCore since references come from NuGet packages-->
+ <EnableFrameworkPathOverride Condition="'$(EnableFrameworkPathOverride)' == ''">false</EnableFrameworkPathOverride>
+ </PropertyGroup>
+
+ <!-- Regardless of platform, enable dependency file generation if PreserveCompilationContext is set. -->
+ <PropertyGroup>
+ <GenerateDependencyFile Condition="'$(GenerateDependencyFile)' == ''">$(PreserveCompilationContext)</GenerateDependencyFile>
+ </PropertyGroup>
+
+ <!-- Set PublishDir here, before Microsoft.Common.targets, to avoid a competing default there. -->
+ <PropertyGroup>
+ <PublishDirName Condition="'$(PublishDirName)' == ''">publish</PublishDirName>
+ <!-- ensure the PublishDir is RID specific-->
+ <PublishDir Condition="'$(PublishDir)' == '' and
+ '$(AppendRuntimeIdentifierToOutputPath)' != 'true' and
+ '$(RuntimeIdentifier)' != '' and
+ '$(_UsingDefaultRuntimeIdentifier)' != 'true'">$(OutputPath)$(RuntimeIdentifier)\$(PublishDirName)\</PublishDir>
+ <PublishDir Condition="'$(PublishDir)' == ''">$(OutputPath)$(PublishDirName)\</PublishDir>
+ </PropertyGroup>
+
+ <!--
+ Sets RestoreAdditionalProjectSources or RestoreAdditionalProjectFallbackFolders to the SDK Offline Cache based
+ on the TargetFramework.
+ -->
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.NuGetOfflineCache.targets" />
+
+ <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'">
+
+ <_SDKImplicitReference Include="System"/>
+ <_SDKImplicitReference Include="System.Data"/>
+ <_SDKImplicitReference Include="System.Drawing"/>
+ <_SDKImplicitReference Include="System.Xml"/>
+
+ <!-- When doing greater than/less than comparisons between strings, MSBuild will try to parse the strings as Version objects and compare them as
+ such if the parse succeeds. -->
+
+ <!-- Framework assemblies introduced in .NET 3.5 -->
+ <_SDKImplicitReference Include="System.Core" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '3.5' "/>
+ <_SDKImplicitReference Include="System.Runtime.Serialization" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '3.5' "/>
+ <_SDKImplicitReference Include="System.Xml.Linq" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '3.5' "/>
+
+ <!-- Framework assemblies introduced in .NET 4.0 -->
+ <_SDKImplicitReference Include="System.Numerics" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.0' "/>
+
+ <!-- Framework assemblies introduced in .NET 4.5 -->
+ <_SDKImplicitReference Include="System.IO.Compression.FileSystem" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>
+
+ <!-- Don't automatically reference System.IO.Compression or System.Net.Http to help avoid hitting https://github.com/Microsoft/msbuild/issues/1329. -->
+ <!--<Reference Include="System.IO.Compression" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>
+ <_SDKImplicitReference Include="System.Net.Http" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' "/>-->
+
+ <_SDKImplicitReference Update="@(_SDKImplicitReference)"
+ Pack="false"
+ IsImplicitlyDefined="true" />
+
+ <!-- Don't duplicate any references that are explicit in the project file. This means that if you do want to include a framework assembly in your
+ NuGet package, you can just add the Reference to your project file. -->
+ <_SDKImplicitReference Remove="@(Reference)" />
+
+ <!-- Add the implicit references to @(Reference) -->
+ <Reference Include="@(_SDKImplicitReference)" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <!-- Prevent System.Core reference from being added separately (see Microsoft.NETFramework.CurrentVersion.props) -->
+ <AddAdditionalExplicitAssemblyReferences>false</AddAdditionalExplicitAssemblyReferences>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(DisableImplicitAssetTargetFallback)' != 'true' and '$(_IsNETCoreOrNETStandard)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' >= '2.0'">
+ <AssetTargetFallback>$(AssetTargetFallback);net461;net462;net47;net471;net472;net48</AssetTargetFallback>
+ </PropertyGroup>
+
+ <!-- Add conditional compilation symbols for the target framework (for example NET461, NETSTANDARD2_0, NETCOREAPP1_0) -->
+ <PropertyGroup Condition=" '$(DisableImplicitFrameworkDefines)' != 'true' and '$(TargetFrameworkIdentifier)' != '.NETPortable' and '$(TargetFrameworkIdentifier)' != ''">
+ <_FrameworkIdentifierForImplicitDefine>$(TargetFrameworkIdentifier.Replace('.', '').ToUpperInvariant())</_FrameworkIdentifierForImplicitDefine>
+ <VersionlessImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)</VersionlessImplicitFrameworkDefine>
+ <_FrameworkIdentifierForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">NET</_FrameworkIdentifierForImplicitDefine>
+
+ <_FrameworkVersionForImplicitDefine>$(TargetFrameworkVersion.TrimStart('vV'))</_FrameworkVersionForImplicitDefine>
+
+ <_FrameworkVersionForImplicitDefine>$(_FrameworkVersionForImplicitDefine.Replace('.', '_'))</_FrameworkVersionForImplicitDefine>
+
+ <_FrameworkVersionForImplicitDefine Condition=" '$(TargetFrameworkIdentifier)' == '.NETFramework'">$(_FrameworkVersionForImplicitDefine.Replace('_', ''))</_FrameworkVersionForImplicitDefine>
+
+ <ImplicitFrameworkDefine>$(_FrameworkIdentifierForImplicitDefine)$(_FrameworkVersionForImplicitDefine)</ImplicitFrameworkDefine>
+ </PropertyGroup>
+
+ <!-- Handle XML documentation file settings -->
+ <PropertyGroup Condition="'$(GenerateDocumentationFile)' == ''">
+ <GenerateDocumentationFile Condition="'$(DocumentationFile)' == ''">false</GenerateDocumentationFile>
+ <GenerateDocumentationFile Condition="'$(DocumentationFile)' != ''">true</GenerateDocumentationFile>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(GenerateDocumentationFile)' == 'true' and '$(DocumentationFile)' == ''">
+ <DocumentationFile Condition="'$(MSBuildProjectExtension)' == '.vbproj'">$(AssemblyName).xml</DocumentationFile>
+ <DocumentationFile Condition="'$(MSBuildProjectExtension)' != '.vbproj'">$(IntermediateOutputPath)$(AssemblyName).xml</DocumentationFile>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(GenerateDocumentationFile)' != 'true'">
+ <DocumentationFile />
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <PublishDocumentationFiles Condition="'$(PublishDocumentationFiles)' == ''">true</PublishDocumentationFiles>
+ <PublishDocumentationFile Condition="'$(PublishDocumentationFile)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishDocumentationFile>
+ <PublishReferencesDocumentationFiles Condition="'$(PublishReferencesDocumentationFiles)' == '' and '$(PublishDocumentationFiles)' == 'true'">true</PublishReferencesDocumentationFiles>
+ </PropertyGroup>
+
+ <!-- Add a project capability so that the project properties in the IDE can show the option to generate an XML documentation file without specifying the filename -->
+ <ItemGroup>
+ <ProjectCapability Include="GenerateDocumentationFile" />
+ </ItemGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets
new file mode 100644
index 0000000000..62e4e8c3bb
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets
@@ -0,0 +1,17 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.BeforeCommonCrossTargeting.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultAssemblyInfo.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DefaultOutputPaths.targets" />
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.props
new file mode 100644
index 0000000000..18634d3152
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.props
@@ -0,0 +1,26 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.CSharp.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <WarningLevel Condition=" '$(WarningLevel)' == '' ">4</WarningLevel>
+ <NoWarn Condition=" '$(NoWarn)' == '' ">1701;1702</NoWarn>
+
+ <!-- Remove the line below once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
+ <WarningsAsErrors Condition=" '$(WarningsAsErrors)' == '' ">NU1605</WarningsAsErrors>
+ </PropertyGroup>
+ <PropertyGroup>
+ <DefineConstants Condition=" '$(DefineConstants)' != '' ">$(DefineConstants);</DefineConstants>
+ <DefineConstants>$(DefineConstants)TRACE</DefineConstants>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.targets
new file mode 100644
index 0000000000..bb24e8bd8f
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CSharp.targets
@@ -0,0 +1,36 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.CSharp.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(DisableImplicitConfigurationDefines)' != 'true'">
+ <ImplicitConfigurationDefine>$(Configuration.ToUpperInvariant())</ImplicitConfigurationDefine>
+
+ <!-- Replace dashes and periods in the configuration with underscores. This makes it more likely that
+ the resulting compilation constant will be a valid C# conditional compilation symbol. As the set
+ of characters that aren't allowed is essentially open-ended, there's probably not a good way to
+ fully sanitize the Configuration in MSBuild evaluation. If the resulting string still isn't a
+ valid conditional combilation symbol, then the compiler will generate the following error and
+ the define will be ignored:
+ warning MSB3052: The parameter to the compiler is invalid, '/define:0BAD_DEFINE' will be ignored.
+ -->
+
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('-', '_'))</ImplicitConfigurationDefine>
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('.', '_'))</ImplicitConfigurationDefine>
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace(' ', '_'))</ImplicitConfigurationDefine>
+ <DefineConstants>$(DefineConstants);$(ImplicitConfigurationDefine)</DefineConstants>
+ </PropertyGroup>
+ <PropertyGroup>
+ <DefineConstants>$(DefineConstants);$(VersionlessImplicitFrameworkDefine);$(ImplicitFrameworkDefine)</DefineConstants>
+ </PropertyGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets
new file mode 100644
index 0000000000..ca52decb49
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.Common.targets
@@ -0,0 +1,103 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.Common.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- This file is imported by both cross-targeting and inner builds. Set properties that need to be available to both here. -->
+
+ <PropertyGroup>
+ <MicrosoftNETBuildTasksDirectoryRoot>$(MSBuildThisFileDirectory)..\tools\</MicrosoftNETBuildTasksDirectoryRoot>
+ <MicrosoftNETBuildTasksTFM Condition=" '$(MSBuildRuntimeType)' == 'Core'">netcoreapp2.1</MicrosoftNETBuildTasksTFM>
+ <MicrosoftNETBuildTasksTFM Condition=" '$(MicrosoftNETBuildTasksTFM)' == ''">net472</MicrosoftNETBuildTasksTFM>
+ <MicrosoftNETBuildTasksDirectory>$(MicrosoftNETBuildTasksDirectoryRoot)$(MicrosoftNETBuildTasksTFM)/</MicrosoftNETBuildTasksDirectory>
+ <MicrosoftNETBuildTasksAssembly>$(MicrosoftNETBuildTasksDirectory)Microsoft.NET.Build.Tasks.dll</MicrosoftNETBuildTasksAssembly>
+
+ <!--
+ Hardcoded list of known implicit packges that are added to project from default SDK targets implicitly.
+ Should be re-visited when multiple TFM support is added to Dependencies logic.
+ -->
+ <DefaultImplicitPackages>Microsoft.NETCore.App;NETStandard.Library</DefaultImplicitPackages>
+ </PropertyGroup>
+
+ <!--
+ Some versions of Microsoft.NET.Test.Sdk.targets change the OutputType after we've set _IsExecutable and
+ HasRuntimeOutput default in Microsoft.NET.Sdk.BeforeCommon.targets. Refresh these value here for backwards
+ compatibilty with that.
+ -->
+ <PropertyGroup>
+ <_IsExecutable Condition="'$(OutputType)' == 'Exe' or '$(OutputType)'=='WinExe'">true</_IsExecutable>
+ <HasRuntimeOutput Condition="'$(_UsingDefaultForHasRuntimeOutput)' == 'true'">$(_IsExecutable)</HasRuntimeOutput>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(DotnetCliToolTargetFramework)' == ''">
+ <!-- Maximum supported target framework for DotnetCliProjectTools is .NET Core 2.2 -->
+ <DotnetCliToolTargetFramework>netcoreapp2.2</DotnetCliToolTargetFramework>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <IncludeBuildOutput Condition=" '$(PackAsTool)' == 'true' ">false</IncludeBuildOutput>
+ <PackageType Condition=" '$(PackAsTool)' == 'true' ">DotnetTool</PackageType>
+ <RuntimeIdentifiers Condition=" '$(PackAsTool)' == 'true' ">$(RuntimeIdentifiers);$(PackAsToolShimRuntimeIdentifiers)</RuntimeIdentifiers>
+ </PropertyGroup>
+
+ <UsingTask TaskName="GetNearestTargetFramework" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="NETSdkError" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="NETSdkWarning" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="NETSdkInformation" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="ShowPreviewMessage" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ GetTargetFrameworkProperties
+
+ Invoked by common targets to return the set of properties
+ (in the form "key1=value1;...keyN=valueN") needed to build
+ against the target framework that best matches the referring
+ project's target framework.
+
+ The referring project's $(TargetFrameworkMoniker) is passed
+ in as $(ReferringTargetFramework).
+
+ This is in the common targets so that it will apply to both
+ cross-targeted and single-targeted projects. It is run
+ for single-targeted projects so that an error will be
+ generated if the referenced project is not compatible
+ with the referencing project's target framework.
+ ============================================================
+ -->
+ <Target Name="GetTargetFrameworkProperties" Returns="TargetFramework=$(NearestTargetFramework);ProjectHasSingleTargetFramework=$(_HasSingleTargetFramework);ProjectIsRidAgnostic=$(_IsRidAgnostic)">
+
+ <PropertyGroup>
+ <!-- indicate to caller that project is RID agnostic so that a global property RuntimeIdentifier value can be removed -->
+ <_IsRidAgnostic>false</_IsRidAgnostic>
+ <_IsRidAgnostic Condition=" '$(RuntimeIdentifier)' == '' and '$(RuntimeIdentifiers)' == '' ">true</_IsRidAgnostic>
+
+ <!-- If a ReferringTargetFramework was not specified, and we only have one TargetFramework, then don't try to check compatibility -->
+ <_SkipNearestTargetFrameworkResolution Condition="'$(TargetFramework)' != '' and '$(ReferringTargetFramework)' == ''">true</_SkipNearestTargetFrameworkResolution>
+ <NearestTargetFramework Condition="'$(_SkipNearestTargetFrameworkResolution)' == 'true'">$(TargetFramework)</NearestTargetFramework>
+
+ <!-- A project can only have more than one output if the current global properties are such that the current build is a cross-targeting one. -->
+ <_HasSingleTargetFramework Condition="'$(IsCrossTargetingBuild)' != 'true'">true</_HasSingleTargetFramework>
+ <_HasSingleTargetFramework Condition="'$(_HasSingleTargetFramework)' == ''">false</_HasSingleTargetFramework>
+
+ <_PossibleTargetFrameworks Condition="'$(TargetFramework)' != ''">$(TargetFramework)</_PossibleTargetFrameworks>
+ <_PossibleTargetFrameworks Condition="'$(TargetFramework)' == ''">$(TargetFrameworks)</_PossibleTargetFrameworks>
+ </PropertyGroup>
+
+ <GetNearestTargetFramework ReferringTargetFramework="$(ReferringTargetFramework)"
+ PossibleTargetFrameworks="$(_PossibleTargetFrameworks)"
+ ProjectFilePath="$(MSBuildProjectFullPath)"
+ Condition="'$(_SkipNearestTargetFrameworkResolution)' != 'true'">
+ <Output PropertyName="NearestTargetFramework" TaskParameter="NearestTargetFramework" />
+ </GetNearestTargetFramework>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CrossTargeting.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CrossTargeting.targets
new file mode 100644
index 0000000000..dfe16ff583
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.CrossTargeting.targets
@@ -0,0 +1,111 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <Import Project="Microsoft.NET.Sdk.Common.targets"/>
+
+ <!--
+ ============================================================
+ Publish
+
+ This is the Publish target for cross-targeting.
+ Currently it is unsupported to publish for multiple target frameworks
+ because users can specify the $(PublishDir), and publish would put
+ multiple published applications in a single directory.
+ ============================================================
+ -->
+ <Target Name="Publish">
+ <Error Text="The 'Publish' target is not supported without specifying a target framework. The current project targets multiple frameworks, please specify the framework for the published application." />
+ </Target>
+
+ <!--
+ ============================================================
+ GetAllRuntimeIdentifiers
+
+ Outer build implementation of GetAllRuntimeIdentifiers returns
+ a union of all runtime identifiers used across inner and outer
+ build evaluations.
+
+ It is further set to run before '_GenerateRestoreProjectSpec'
+ (note that running only 'Restore' is too late and will not work
+ with solution level restore). This ensures that any conditioning
+ of runtime identifiers against TargetFramework does not prevent
+ restore from providing the necessary RID-specific assets for all
+ inner builds.
+
+ It also brings parity to VS vs. command line behavior in this
+ scenario because VS passes all of the information from each
+ configured inner build to restore, whereas command-line restore
+ without this target would only use the runtime identifiers that
+ are statically set in the outer evaluation.
+ ============================================================
+ -->
+ <Target Name="GetAllRuntimeIdentifiers"
+ Returns="$(RuntimeIdentifiers)"
+ BeforeTargets="_GenerateRestoreProjectSpec">
+
+ <ItemGroup>
+ <_GetAllRuntimeIdentifiersTargetFrameworks Include="$(TargetFrameworks)" />
+ <_AllRuntimeIdentifiers Include="$(RuntimeIdentifiers);$(RuntimeIdentifier)" />
+ </ItemGroup>
+
+ <MSBuild Projects="$(MSBuildProjectFile)"
+ Targets="GetAllRuntimeIdentifiers"
+ Properties="TargetFramework=%(_GetAllRuntimeIdentifiersTargetFrameworks.Identity)">
+ <Output ItemName="_AllRuntimeIdentifiers" TaskParameter="TargetOutputs" />
+ </MSBuild>
+
+ <PropertyGroup>
+ <RuntimeIdentifiers>@(_AllRuntimeIdentifiers->Distinct())</RuntimeIdentifiers>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ GetPackagingOutputs
+
+ Stub cross-targeting implementation of GetPackagingOutputs
+ to allow project references from from projects that pull in
+ Microsoft.AppxPackage.targets (UWP, PCL) to cross-targeted
+ projects.
+
+ Ultimately, the appx targets should be modified to use the
+ same P2P TFM negotiation protocol as Microsoft.Common.targets
+ so that they can forward to the TFM-specific GetPackagingOutputs
+ of the appropriate inner build. This stub would not have any
+ bad interaction with that change, which would happily bypass
+ this implementation altogether.
+
+ An empty GetPackagingOutputs is sufficient for the common
+ case of a library with no special assets to contribute to
+ the appx and is also equivalent to what is present in the
+ single-targeted case unless WindowsAppContainer is not set
+ to true.
+
+ Furthermore, the appx targets currently use continue-on-error
+ such that even without this, clean builds succeed but log an
+ error and incremental builds silently succeed. As such, this
+ simply removes a confounding error from successful clean
+ builds.
+
+ ============================================================
+ -->
+ <Target Name="GetPackagingOutputs" />
+
+ <!-- This exists as a workaround for https://github.com/Microsoft/msbuild/issues/3558 -->
+ <PropertyGroup Condition="'$(DefaultProjectTypeGuid)' == ''">
+ <DefaultProjectTypeGuid Condition="'$(MSBuildProjectExtension)' == '.csproj'">{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</DefaultProjectTypeGuid>
+ <DefaultProjectTypeGuid Condition="'$(MSBuildProjectExtension)' == '.vbproj'">{F184B08F-C81C-45F6-A57F-5ABD9991F28F}</DefaultProjectTypeGuid>
+ <!-- Note: F# sets DefaultProjectTypeGuid in the F# SDK -->
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.props
new file mode 100644
index 0000000000..d3fc909c91
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.props
@@ -0,0 +1,80 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.DefaultItems.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition="'$(NETCoreSdkBundledVersionsProps)' == ''">
+ <NETCoreSdkBundledVersionsProps>$(MSBuildThisFileDirectory)..\..\..\Microsoft.NETCoreSdk.BundledVersions.props</NETCoreSdkBundledVersionsProps>
+ </PropertyGroup>
+
+ <Import Project="$(NETCoreSdkBundledVersionsProps)" Condition="Exists('$(NETCoreSdkBundledVersionsProps)')" />
+
+ <PropertyGroup>
+ <!-- Set RuntimeIdentifier graph for NuGet (this needs to be after NETCoreSdkBundledVersionsProps is imported, as that's where
+ BundledRuntimeIdentifierGraphFile is set. -->
+ <RuntimeIdentifierGraphPath Condition="'$(RuntimeIdentifierGraphPath)' == ''">$(BundledRuntimeIdentifierGraphFile)</RuntimeIdentifierGraphPath>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <!-- Disable web SDK implicit package versions for ASP.NET packages, since the .NET SDK now handles that -->
+ <EnableWebSdkImplicitPackageVersions>false</EnableWebSdkImplicitPackageVersions>
+ </PropertyGroup>
+
+
+ <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' ">
+ <Compile Include="**/*$(DefaultLanguageSourceExtension)" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultCompileItems)' == 'true' " />
+ <EmbeddedResource Include="**/*.resx" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" Condition=" '$(EnableDefaultEmbeddedResourceItems)' == 'true' " />
+ </ItemGroup>
+ <ItemGroup Condition=" '$(EnableDefaultItems)' == 'true' And '$(EnableDefaultNoneItems)' == 'true' ">
+ <None Include="**/*" Exclude="$(DefaultItemExcludes);$(DefaultExcludesInProjectFolder)" />
+ <None Remove="**/*$(DefaultLanguageSourceExtension)" />
+ <None Remove="**/*.resx" />
+ </ItemGroup>
+
+ <!-- Automatically reference NETStandard.Library or Microsoft.NETCore.App package if targeting the corresponding target framework.
+ We can refer here in the .props file to properties set in the .targets files because items and their conditions are
+ evaluated in the second pass of evaluation, after all properties have been evaluated. -->
+ <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'">
+ <PackageReference Include="NETStandard.Library" Version="$(NETStandardImplicitPackageVersion)" IsImplicitlyDefined="true" />
+
+ <!-- If targeting .NET Standard 2.0 or higher, then don't include a dependency on NETStandard.Library in the package produced by pack -->
+ <PackageReference Update="NETStandard.Library"
+ Condition=" ('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' >= '2.0') "
+ PrivateAssets="All"
+ Publish="true" />
+ </ItemGroup>
+ <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' >= '2.1'">
+ <FrameworkReference Include="NETStandard.Library" IsImplicitlyDefined="true" Pack="false" PrivateAssets="All"/>
+ </ItemGroup>
+
+ <ItemGroup Condition=" '$(DisableImplicitFrameworkReferences)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
+
+ <!-- Use implicit PackageReference for Microsoft.NETCore.App on versions prior to 3.0. For 3.0 or higher, use
+ an implicit FrameworkReference -->
+
+ <PackageReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true"
+ Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0')"/>
+
+ <!-- For targeting .NET Core 2.0 or higher, don't include a dependency on Microsoft.NETCore.App in the package produced by pack.
+ Packing an DotnetCliTool should include the Microsoft.NETCore.App package dependency. -->
+ <PackageReference Update="Microsoft.NETCore.App"
+ Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' >= '2.0') And ('$(PackageType)' != 'DotnetCliTool')"
+ PrivateAssets="All"
+ Publish="true" />
+
+ <FrameworkReference Include="Microsoft.NETCore.App" IsImplicitlyDefined="true"
+ Pack="false"
+ PrivateAssets="All"
+ Condition="('$(_TargetFrameworkVersionWithoutV)' != '') And ('$(_TargetFrameworkVersionWithoutV)' >= '3.0')"/>
+
+ </ItemGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets
new file mode 100644
index 0000000000..b2b7ff203f
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.DefaultItems.targets
@@ -0,0 +1,352 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.DefaultItems.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- Don't get the default item globs by default when the flag is not set. -->
+ <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'">
+ <EnableDefaultItems Condition=" '$(EnableDefaultItems)' == '' ">true</EnableDefaultItems>
+ <EnableDefaultCompileItems Condition=" '$(EnableDefaultCompileItems)' == '' ">true</EnableDefaultCompileItems>
+ <EnableDefaultEmbeddedResourceItems Condition=" '$(EnableDefaultEmbeddedResourceItems)' == '' ">true</EnableDefaultEmbeddedResourceItems>
+ <EnableDefaultNoneItems Condition=" '$(EnableDefaultNoneItems)' == '' ">true</EnableDefaultNoneItems>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <!-- Set DefaultItemExcludes property for items that should be excluded from the default Compile, etc items.
+ This is in the .targets because it needs to come after the final BaseOutputPath has been evaluated. -->
+
+ <!-- bin folder, by default -->
+ <DefaultItemExcludes>$(DefaultItemExcludes);$(BaseOutputPath)/**</DefaultItemExcludes>
+ <!-- obj folder, by default -->
+ <DefaultItemExcludes>$(DefaultItemExcludes);$(BaseIntermediateOutputPath)/**</DefaultItemExcludes>
+
+ <!-- Various files that should generally always be ignored -->
+ <DefaultItemExcludes>$(DefaultItemExcludes);**/*.user</DefaultItemExcludes>
+ <DefaultItemExcludes>$(DefaultItemExcludes);**/*.*proj</DefaultItemExcludes>
+ <DefaultItemExcludes>$(DefaultItemExcludes);**/*.sln</DefaultItemExcludes>
+ <DefaultItemExcludes>$(DefaultItemExcludes);**/*.vssscc</DefaultItemExcludes>
+
+ <!-- WARNING: This pattern is there to ignore folders such as .git and .vs, but it will also match items included with a
+ relative path outside the project folder (for example "..\Shared\Shared.cs"). So be sure only to apply it to items
+ that are in the project folder. -->
+ <DefaultExcludesInProjectFolder>$(DefaultItemExcludesInProjectFolder);**/.*/**</DefaultExcludesInProjectFolder>
+
+ </PropertyGroup>
+
+ <!-- Set the default versions of the NETStandard.Library or Microsoft.NETCore.App packages to reference.
+ The implicit package references themselves are defined in Microsoft.NET.Sdk.props, so that they can be overridden
+ in the project file. -->
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.1'">
+ <!-- If targeting .NET Standard 1.x, use version 1.6.1 of the package. This is so that when projects are packed, the dependency on the package produced won't change when
+ updating to the 2.0 or higher SDK. When targeting .NET Standard 2.0 or higher, the NETStandard.Library reference won't show up as a dependency of the package
+ produced, so we will roll forward to the latest version. -->
+ <NETStandardImplicitPackageVersion Condition="'$(NETStandardImplicitPackageVersion)' =='' And '$(_TargetFrameworkVersionWithoutV)' &lt; '2.0'">1.6.1</NETStandardImplicitPackageVersion>
+
+ <!-- Default to use the latest stable 2.0.x release. -->
+ <NETStandardImplicitPackageVersion Condition="'$(NETStandardImplicitPackageVersion)' ==''">2.0.3</NETStandardImplicitPackageVersion>
+ </PropertyGroup>
+
+ <!--
+ Determine the version (including patch) of .NET Core to target.
+
+ When targeting .NET Core, the TargetFramework is used to specify the major and minor version of the runtime to use. By default,
+ the patch version is inferred. The general logic is that self-contained apps will target the latest patch that the SDK
+ knows about, while framework-dependent apps will target the ".0" patch (and roll forward to the latest patch installed at
+ runtime).
+
+ When targeting .NET Core 1.0 and 1.1, framework-dependent apps use 1.0.5 and 1.1.2, respectively. This is done for compatibility
+ with previous releases that bumped the self-contained and framework-dependent versions together.
+
+ The TargetLatestRuntimePatch property can be set to true or false to explicitly opt in or out of the logic to roll forward
+ to the latest patch, regardless of whether the app is self-contained or framework-dependent.
+
+ The RuntimeFrameworkVersion is where the actual version of the .NET Core runtime to target can be set. If set, it will be
+ used in the implicit PackageReference to Microsoft.NETCore.App.
+
+ The framework version that is written to the runtimeconfig.json file is based on the actual resolved package version
+ of Microsoft.NETCore.App. This is to allow floating the verion number (ie the RuntimeFrameworkVersion could be set to
+ "2.0-*".
+
+ -->
+
+ <PropertyGroup Condition="'$(TargetLatestRuntimePatch)' == ''">
+ <TargetLatestRuntimePatch Condition="'$(SelfContained)' == 'true' ">true</TargetLatestRuntimePatch>
+ <TargetLatestRuntimePatch Condition="'$(SelfContained)' != 'true' ">false</TargetLatestRuntimePatch>
+ <_TargetLatestRuntimePatchIsDefault>true</_TargetLatestRuntimePatchIsDefault>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(DisableImplicitFrameworkReferences)' != 'true'">
+ <VerifyMatchingImplicitPackageVersion Condition="'$(VerifyMatchingImplicitPackageVersion)' == ''">true</VerifyMatchingImplicitPackageVersion>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <!-- Set implicit metadata on ASP.NET package references -->
+ <PackageReference Update="Microsoft.AspNetCore.App">
+ <PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
+ <Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
+ </PackageReference>
+
+ <PackageReference Update="Microsoft.AspNetCore.All">
+ <PrivateAssets Condition="'%(PackageReference.Version)' == ''">all</PrivateAssets>
+ <Publish Condition="'%(PackageReference.Version)' == ''">true</Publish>
+ </PackageReference>
+
+ <!-- Allow RuntimeFrameworkVersion to be used to explicitly specify the version of Microsoft.NETCore.App -->
+ <PackageReference Update="Microsoft.NETCore.App"
+ Version="$(RuntimeFrameworkVersion)"
+ Condition="'$(RuntimeFrameworkVersion)' != ''"
+ AllowExplicitVersion="true"/>
+
+ <!-- If implicit PackageReferences are disabled, then don't warn about explicit versions at all -->
+ <PackageReference Update="@(PackageReference)"
+ Condition="'$(DisableImplicitFrameworkReferences)' == 'true'"
+ AllowExplicitVersion="true"/>
+ </ItemGroup>
+
+ <UsingTask TaskName="ApplyImplicitVersions" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="CheckIfPackageReferenceShouldBeFrameworkReference" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="UpdateAspNetToFrameworkReference"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' >= '3.0'">
+
+ <CheckIfPackageReferenceShouldBeFrameworkReference
+ PackageReferences="@(PackageReference)"
+ FrameworkReferences="@(FrameworkReference)"
+ PackageReferenceToReplace="Microsoft.AspNetCore.All"
+ FrameworkReferenceToUse="Microsoft.AspNetCore.App">
+ <Output TaskParameter="ShouldRemovePackageReference" PropertyName="_ShouldRemoveAspNetCoreAll" />
+ </CheckIfPackageReferenceShouldBeFrameworkReference>
+
+ <!-- NETSDK1079: The Microsoft.AspNetCore.All package is not supported when targeting .NET Core 3.0 or higher.
+ A FrameworkReference to Microsoft.AspNetCore.App should be used instead, and will be implicitly included by Microsoft.NET.Sdk.Web. -->
+ <NETSdkError Condition="'$(_ShouldRemoveAspNetCoreAll)' == 'true'"
+ ResourceName="AspNetCoreAllNotSupported" />
+
+ <CheckIfPackageReferenceShouldBeFrameworkReference
+ PackageReferences="@(PackageReference)"
+ FrameworkReferences="@(FrameworkReference)"
+ PackageReferenceToReplace="Microsoft.AspNetCore.App"
+ FrameworkReferenceToUse="Microsoft.AspNetCore.App">
+ <Output TaskParameter="ShouldRemovePackageReference" PropertyName="_ShouldRemoveAspNetCoreApp" />
+ <Output TaskParameter="ShouldAddFrameworkReference" PropertyName="_ShouldAddAspNetCoreAppFrameworkReference" />
+ </CheckIfPackageReferenceShouldBeFrameworkReference>
+
+ <ItemGroup>
+ <PackageReference Remove="Microsoft.AspNetCore.App" Condition="'$(_ShouldRemoveAspNetCoreApp)' == 'true'" />
+ <FrameworkReference Include="Microsoft.AspNetCore.App" Condition="'$(_ShouldAddAspNetCoreAppFrameworkReference)' == 'true'" />
+ </ItemGroup>
+
+ <!-- NETSDK1080: A PackageReference to Microsoft.AspNetCore.App is not necessary when targeting .NET Core 3.0 or higher.
+ If Microsoft.NET.Sdk.Web is used, the shared framework will be referenced automatically. Otherwise, the PackageReference
+ should be replaced with a FrameworkReference. -->
+
+ <NETSdkWarning Condition="'$(_ShouldRemoveAspNetCoreApp)' == 'true'"
+ ResourceName="AspNetCoreUsesFrameworkReference" />
+
+ </Target>
+
+ <Target Name="ApplyImplicitVersions"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;ProcessFrameworkReferences"
+ DependsOnTargets="UpdateAspNetToFrameworkReference;CheckForImplicitPackageReferenceOverrides"
+ Condition="'@(PackageReference)' != ''">
+
+ <ApplyImplicitVersions TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)"
+ TargetLatestRuntimePatch="$(TargetLatestRuntimePatch)"
+ PackageReferences="@(PackageReference)"
+ ImplicitPackageReferenceVersions="@(ImplicitPackageReferenceVersion)">
+ <Output TaskParameter="PackageReferencesToUpdate" ItemName="PackageReferenceToUpdate" />
+ <Output TaskParameter="SdkBuildWarnings" ItemName="SdkBuildWarning" />
+ </ApplyImplicitVersions>
+
+ <ItemGroup>
+ <PackageReference Remove="@(PackageReferenceToUpdate)" />
+ <PackageReference Include="@(PackageReferenceToUpdate)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <!-- Support using a patch version in the TargetFramework, ie netcoreapp1.1.1
+ Note that this isn't officially supported, but it worked in the past so
+ this should prevent breaking it. -->
+ <PackageReference Condition="'%(PackageReference.Identity)' == 'Microsoft.NETCore.App'">
+ <Version Condition="'%(PackageReference.Version)' == ''">$(_TargetFrameworkVersionWithoutV)</Version>
+ </PackageReference>
+ </ItemGroup>
+ </Target>
+
+ <!-- This target runs before build but not before restore, to avoid duplicating these warnings
+ if building with an implicit restore. -->
+ <Target Name="WarnForExplicitVersions" BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
+ DependsOnTargets="ApplyImplicitVersions"
+ Condition="'@(SdkBuildWarning)' != ''">
+ <NetSdkWarning FormattedText="%(SdkBuildWarning.Identity)" />
+ </Target>
+
+ <!--
+ Automatically add Link metadata to items of specific types if they are outside of the project folder and don't already have the Link metadata set.
+ This will cause them to be shown in the Solution Explorer. If an item has LinkBase metadata, the automatic Link will start with that value, and
+ the items will appear in the Solution Explorer under the folder specified by LinkBase.
+ -->
+ <ItemGroup Condition="'$(SetLinkMetadataAutomatically)' != 'false'">
+ <Compile Update="@(Compile)">
+ <!-- First, add a trailing slash to the LinkBase metadata if necessary. This allows us to use the same value
+ for the Link metadata whether or not LinkBase metadata is set: %(LinkBase)%(RecursiveDir)%(Filename)%(Extension)
+
+ Note that RecursiveDir already includes the trailing slash.
+ -->
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+
+ <!-- Set the Link metadata if it's not already set, if the item wasn't defined in a shared project, and the item is outside of the project directory.
+ Check whether the item was defined in a shared project by checking whether the extension of the defining project was .projitems.
+ Check whether an item is inside the project directory by seeing if the FullPath starts with EnsureTrailingSlash(MSBuildProjectDirectory)
+ The FullPath and the MSBuildProjectDirectory will both already be normalized full paths.
+ The call to [MSBuild]::ValueOrDefault() is there in order to allow calling StartsWith on the FullPath value, since it's
+ not possible to call a string method on a metadata item directly. The intrinsic ValueOrDefault() will be more
+ performant than calling String.Copy(), which has been used for this in other contexts, but actually makes a copy
+ of the string data.
+ -->
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </Compile>
+
+ <AdditionalFiles Update="@(AdditionalFiles)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </AdditionalFiles>
+
+ <None Update="@(None)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </None>
+
+ <Content Update="@(Content)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </Content>
+
+ <EmbeddedResource Update="@(EmbeddedResource)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </EmbeddedResource>
+
+ <Page Update="@(Page)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </Page>
+
+ <Resource Update="@(Resource)">
+ <LinkBase Condition="'%(LinkBase)' != ''">$([MSBuild]::EnsureTrailingSlash(%(LinkBase)))</LinkBase>
+ <Link Condition="'%(Link)' == '' And '%(DefiningProjectExtension)' != '.projitems' And !$([MSBuild]::ValueOrDefault('%(FullPath)', '').StartsWith($([MSBuild]::EnsureTrailingSlash($(MSBuildProjectDirectory)))))">%(LinkBase)%(RecursiveDir)%(Filename)%(Extension)</Link>
+ </Resource>
+ </ItemGroup>
+
+ <UsingTask TaskName="CheckForImplicitPackageReferenceOverrides" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!-- Remove package references with metadata IsImplicitlyDefined = true, if there are other PackageReference items with the same identity -->
+ <Target Name="CheckForImplicitPackageReferenceOverrides" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences">
+ <PropertyGroup>
+ <ImplicitPackageReferenceInformationLink>https://aka.ms/sdkimplicitrefs</ImplicitPackageReferenceInformationLink>
+ </PropertyGroup>
+
+ <CheckForImplicitPackageReferenceOverrides
+ PackageReferenceItems="@(PackageReference)"
+ MoreInformationLink="$(ImplicitPackageReferenceInformationLink)">
+ <Output TaskParameter="ItemsToRemove" ItemName="_PackageReferenceToRemove" />
+ <Output TaskParameter="ItemsToAdd" ItemName="_PackageReferenceToAdd" />
+ </CheckForImplicitPackageReferenceOverrides>
+
+ <ItemGroup>
+ <!-- Remove and add the PackageReference items according to the output from the task -->
+ <PackageReference Remove="@(_PackageReferenceToRemove)" />
+
+ <PackageReference Include="@(_PackageReferenceToAdd)" />
+
+ <!-- Clear items for other targets to use -->
+ <_PackageReferenceToAdd Remove="@(_PackageReferenceToAdd)" />
+
+ </ItemGroup>
+
+ <!-- If any implicit package references were overridden, then don't check that RuntimeFrameworkVersion matches the package version -->
+ <PropertyGroup Condition="'@(_PackageReferenceToRemove)' != ''">
+ <VerifyMatchingImplicitPackageVersion>false</VerifyMatchingImplicitPackageVersion>
+ </PropertyGroup>
+
+ </Target>
+
+ <UsingTask TaskName="CheckForDuplicateItems" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="CheckForDuplicateItems" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CoreCompile">
+
+ <PropertyGroup>
+ <DefaultItemsMoreInformationLink>https://aka.ms/sdkimplicititems</DefaultItemsMoreInformationLink>
+ </PropertyGroup>
+
+ <!-- NOTE for design-time builds we continue on errors and remove the duplicate items.
+ This is because otherwise there won't be any references to pass to the compiler, leading to design-time
+ compilation errors for every API that is used in the project. Amidst all the compile errors, it would
+ be easy to miss the duplicate items error which is the real source of the problem. -->
+
+ <CheckForDuplicateItems
+ Items="@(Compile)"
+ ItemName="Compile"
+ DefaultItemsEnabled="$(EnableDefaultItems)"
+ DefaultItemsOfThisTypeEnabled="$(EnableDefaultCompileItems)"
+ PropertyNameToDisableDefaultItems="EnableDefaultCompileItems"
+ MoreInformationLink="$(DefaultItemsMoreInformationLink)"
+ ContinueOnError="$(ContinueOnError)">
+ <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedCompileItems" />
+ </CheckForDuplicateItems>
+
+ <CheckForDuplicateItems
+ Items="@(EmbeddedResource)"
+ ItemName="EmbeddedResource"
+ DefaultItemsEnabled="$(EnableDefaultItems)"
+ DefaultItemsOfThisTypeEnabled="$(EnableDefaultEmbeddedResourceItems)"
+ PropertyNameToDisableDefaultItems="EnableDefaultEmbeddedResourceItems"
+ MoreInformationLink="$(DefaultItemsMoreInformationLink)"
+ ContinueOnError="$(ContinueOnError)">
+ <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedEmbeddedResourceItems" />
+ </CheckForDuplicateItems>
+
+ <!-- Default content items are enabled by the Web SDK, not the .NET SDK, but we check it here for simplicity -->
+ <CheckForDuplicateItems
+ Items="@(Content)"
+ ItemName="Content"
+ DefaultItemsEnabled="$(EnableDefaultItems)"
+ DefaultItemsOfThisTypeEnabled="$(EnableDefaultContentItems)"
+ PropertyNameToDisableDefaultItems="EnableDefaultContentItems"
+ MoreInformationLink="$(DefaultItemsMoreInformationLink)"
+ ContinueOnError="$(ContinueOnError)">
+ <Output TaskParameter="DeduplicatedItems" ItemName="DeduplicatedContentItems" />
+ </CheckForDuplicateItems>
+
+ <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedCompileItems)' != ''">
+ <Compile Remove="@(Compile)" />
+ <Compile Include="@(DeduplicatedCompileItems)" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedEmbeddedResourceItems)' != ''">
+ <EmbeddedResource Remove="@(EmbeddedResource)" />
+ <EmbeddedResource Include="@(DeduplicatedEmbeddedResourceItems)" />
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(DesignTimeBuild)' == 'true' And '@(DeduplicatedContentItems)' != ''">
+ <Content Remove="@(Content)" />
+ <Content Include="@(DeduplicatedContentItems)" />
+ </ItemGroup>
+
+ </Target>
+
+ <Target Name="CheckWindowsDesktopSdkInUse"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform"
+ Condition="'$(UseWpf)' == 'true' Or '$(UseWindowsForms)' == 'true'">
+ <NetSdkWarning Condition="'$(_MicrosoftNetSdkWindowsDesktop)' != 'true'"
+ ResourceName="UseWpfOrUseWindowsFormsRequiresWindowsDesktopFramework" />
+ </Target>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.props
new file mode 100644
index 0000000000..1f603b2a18
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.props
@@ -0,0 +1,31 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.FSharp.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- If any of these variables are set then we are building under the FSharp.NET.Sdk so use their logic -->
+ <PropertyGroup Condition = "'$(UseBundledFSharpTargets)' == '' ">
+ <!-- If any of these variables are set then we are building under the FSharp.NET.Sdk so use their logic -->
+ <UseBundledFSharpTargets Condition = " '$(_FscTaskAssemblyPath_net)' != '' or '$(_FscTaskAssemblyPath_netcoreapp1_0)' != '' or '$(_FscToolFullPath_net)' != '' or '$(_FscToolFullPath_netcoreapp1_0)' != '' ">false</UseBundledFSharpTargets>
+ <UseBundledFSharpTargets Condition = "'$(UseBundledFSharpTargets)' == '' ">true</UseBundledFSharpTargets>
+ </PropertyGroup>
+
+ <!-- Shim to select the correct Microsoft.NET.Sdk.FSharp.props file.
+ If running under desktop select Microsoft.NET.Sdk.FSharp.props file from VS deployment,
+ if running core msbuild select Microsoft.NET.Sdk.FSharp.props from dotnet cli deployment -->
+ <PropertyGroup>
+ <FSharpPropsShim Condition = " '$(FSharpPropsShim)' == '' and Exists('$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.props') ">$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.props</FSharpPropsShim>
+ <FSharpPropsShim Condition = " '$(FSharpPropsShim)' == '' and Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.props') ">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.props</FSharpPropsShim>
+ </PropertyGroup>
+ <Import Condition=" '$(UseBundledFSharpTargets)' == 'true' and Exists('$(FSharpPropsShim)') " Project="$(FSharpPropsShim)" />
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets
new file mode 100644
index 0000000000..0a7ad972fb
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharp.targets
@@ -0,0 +1,31 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.FSharp.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!-- ***************************************************************************************************************
+ Shim to select the correct Microsoft.FSharp.Overrides.NetSdk.targets file when not running
+ under Cross-targeting build and not under FSharp.Sdk
+ If running under desktop select Microsoft.FSharp.targets file from VS deployment,
+ if running core msbuild select Microsoft.FSharp.targets from dotnet cli deployment
+ *************************************************************************************************************** -->
+ <PropertyGroup Condition=" '$(IsCrossTargetingBuild)' != 'true' " >
+ <FSharpOverridesTargetsShim Condition = " '$(FSharpOverridesTargetsShim)' == '' and Exists('$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets') ">$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets</FSharpOverridesTargetsShim>
+ <FSharpOverridesTargetsShim Condition = " '$(FSharpOverridesTargetsShim)' == '' and Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets') ">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.Overrides.NetSdk.targets</FSharpOverridesTargetsShim>
+ </PropertyGroup>
+ <Import Condition=" '$(UseBundledFSharpTargets)' == 'true' and '$(IsCrossTargetingBuild)' != 'true' and Exists('$(FSharpOverridesTargetsShim)') " Project="$(FSharpOverridesTargetsShim)" />
+
+ <PropertyGroup>
+ <DefineConstants>$(DefineConstants);$(VersionlessImplicitFrameworkDefine);$(ImplicitFrameworkDefine)</DefineConstants>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets
new file mode 100644
index 0000000000..a8fde9c939
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FSharpTargetsShim.targets
@@ -0,0 +1,61 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.FSharpTargetsShim.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition=" '$(UseBundledFSharpTargets)' == 'true' ">
+ <AppDesignerFolder Condition="'$(AppDesignerFolder)' == ''">Properties</AppDesignerFolder>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(DisableImplicitConfigurationDefines)' != 'true' and '$(UseBundledFSharpTargets)' == 'true' ">
+ <ImplicitConfigurationDefine>$(Configuration.ToUpperInvariant())</ImplicitConfigurationDefine>
+
+ <!-- Replace dashes and periods in the configuration with underscores. This makes it more likely that
+ the resulting compilation constant will be a valid C# conditional compilation symbol. As the set
+ of characters that aren't allowed is essentially open-ended, there's probably not a good way to
+ fully sanitize the Configuration in MSBuild evaluation. If the resulting string still isn't a
+ valid conditional combilation symbol, then the compiler will generate the following error and
+ the define will be ignored:
+ warning MSB3052: The parameter to the compiler is invalid, '/define:0BAD_DEFINE' will be ignored.
+ -->
+
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('-', '_'))</ImplicitConfigurationDefine>
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('.', '_'))</ImplicitConfigurationDefine>
+ <DefineConstants>$(DefineConstants);$(ImplicitConfigurationDefine)</DefineConstants>
+ </PropertyGroup>
+
+ <!-- ***************************************************************************************************************
+ Loads the cross-targeting targets if we are doing a cross-targeting build
+ Import design time targets for Roslyn Project System. These are only available if Visual Studio is installed.
+ Import design time targets before the common crosstargeting targets, which import targets from Nuget.
+ *************************************************************************************************************** -->
+ <PropertyGroup>
+ <FSharpDesignTimeTargetsPath>$(MSBuildExtensionsPath)\Microsoft\VisualStudio\Managed\Microsoft.FSharp.DesignTime.targets</FSharpDesignTimeTargetsPath>
+ </PropertyGroup>
+ <Import Project="$(FSharpDesignTimeTargetsPath)"
+ Condition=" '$(UseBundledFSharpTargets)' == 'true' and '$(FSharpDesignTimeTargetsPath)' != '' and Exists('$(FSharpDesignTimeTargetsPath)') " />
+ <Import Project="$(MSBuildToolsPath)\Microsoft.Common.CrossTargeting.targets"
+ Condition=" '$(UseBundledFSharpTargets)' == 'true' and '$(IsCrossTargetingBuild)' == 'true' "/>
+
+ <!-- ***************************************************************************************************************
+ Shim to select the correct Microsoft.NET.Sdk.FSharp.targets file when not running
+ under Cross-targeting build and not under FSharp.Sdk
+ If running under desktop select Microsoft.FSharp.targets file from VS deployment,
+ if running core msbuild select Microsoft.FSharp.targets from dotnet cli deployment
+ *************************************************************************************************************** -->
+ <PropertyGroup Condition=" '$(IsCrossTargetingBuild)' != 'true' " >
+ <FSharpTargetsShim Condition = " '$(FSharpTargetsShim)' == '' and Exists('$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.targets') ">$(MSBuildToolsPath)\FSharp\Microsoft.FSharp.NetSdk.targets</FSharpTargetsShim>
+ <FSharpTargetsShim Condition = " '$(FSharpTargetsShim)' == '' and Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.targets') ">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\FSharp\Microsoft.FSharp.NetSdk.targets</FSharpTargetsShim>
+ </PropertyGroup>
+ <Import Condition=" '$(UseBundledFSharpTargets)' == 'true' and '$(IsCrossTargetingBuild)' != 'true' and Exists('$(FSharpTargetsShim)') " Project="$(FSharpTargetsShim)" />
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
new file mode 100644
index 0000000000..ab75bd7bdc
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
@@ -0,0 +1,368 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.FrameworkReferenceResolution.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project>
+ <PropertyGroup>
+ <ResolveAssemblyReferencesDependsOn>
+ $(ResolveAssemblyReferencesDependsOn);
+ ResolveTargetingPackAssets;
+ </ResolveAssemblyReferencesDependsOn>
+ </PropertyGroup>
+
+ <UsingTask TaskName="CheckForDuplicateFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="ProcessFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="ResolveAppHosts" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ ProcessFrameworkReferences
+
+ Matches FrameworkReference items with KnownFrameworkReference items to determine the corresponding
+ targeting pack and if necessary the runtime pack. If the packs aren't available in the NetCoreTargetingPackRoot
+ folder, then generate PackageDownload items in order to download the packs during restore.
+
+ Also resolves app host packs in a similar fashion, and checks for duplicate FrameworkReference items.
+ ============================================================
+ -->
+
+ <Target Name="ProcessFrameworkReferences" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;CollectPackageReferences;CollectPackageDownloads"
+ Condition="'@(FrameworkReference)' != ''">
+
+ <CheckForDuplicateFrameworkReferences
+ FrameworkReferences="@(FrameworkReference)"
+ MoreInformationLink="https://aka.ms/sdkimplicitrefs">
+ <Output TaskParameter="ItemsToRemove" ItemName="_FrameworkReferenceToRemove" />
+ <Output TaskParameter="ItemsToAdd" ItemName="_FrameworkReferenceToAdd" />
+ </CheckForDuplicateFrameworkReferences>
+
+ <ItemGroup>
+ <FrameworkReference Remove="@(_FrameworkReferenceToRemove)" />
+ <FrameworkReference Include="@(_FrameworkReferenceToAdd)" />
+ </ItemGroup>
+
+ <PropertyGroup Condition="'$(EnableTargetingPackDownload)' == ''">
+ <EnableTargetingPackDownload>true</EnableTargetingPackDownload>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)"/>
+ </ItemGroup>
+
+ <ProcessFrameworkReferences FrameworkReferences="@(FrameworkReference)"
+ KnownFrameworkReferences="@(KnownFrameworkReference)"
+ TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
+ TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)"
+ TargetingPackRoot="$(NetCoreTargetingPackRoot)"
+ RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)"
+ SelfContained="$(SelfContained)"
+ ReadyToRunEnabled="$(PublishReadyToRun)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ RuntimeIdentifiers="$(RuntimeIdentifiers)"
+ RuntimeFrameworkVersion="$(RuntimeFrameworkVersion)"
+ TargetLatestRuntimePatch="$(TargetLatestRuntimePatch)"
+ TargetLatestRuntimePatchIsDefault="$(_TargetLatestRuntimePatchIsDefault)"
+ EnableTargetingPackDownload="$(EnableTargetingPackDownload)">
+
+ <Output TaskParameter="PackagesToDownload" ItemName="_PackageToDownload" />
+ <Output TaskParameter="RuntimeFrameworks" ItemName="RuntimeFramework" />
+ <Output TaskParameter="TargetingPacks" ItemName="TargetingPack" />
+ <Output TaskParameter="RuntimePacks" ItemName="RuntimePack" />
+ <Output TaskParameter="UnavailableRuntimePacks" ItemName="UnavailableRuntimePack" />
+
+ </ProcessFrameworkReferences>
+
+ <PropertyGroup Condition="'$(AppHostRuntimeIdentifier)' == '' And
+ ('$(UseAppHost)' == 'true' Or '$(EnableComHosting)' == 'true' Or '$(UseIJWHost)' == 'true')">
+ <AppHostRuntimeIdentifier>$(RuntimeIdentifier)</AppHostRuntimeIdentifier>
+ <AppHostRuntimeIdentifier Condition="'$(AppHostRuntimeIdentifier)' == ''">$(DefaultAppHostRuntimeIdentifier)</AppHostRuntimeIdentifier>
+ </PropertyGroup>
+
+ <ResolveAppHosts TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
+ TargetFrameworkVersion="$(_TargetFrameworkVersionWithoutV)"
+ TargetingPackRoot="$(NetCoreTargetingPackRoot)"
+ AppHostRuntimeIdentifier="$(AppHostRuntimeIdentifier)"
+ OtherRuntimeIdentifiers="$(RuntimeIdentifiers)"
+ RuntimeFrameworkVersion="$(RuntimeFrameworkVersion)"
+ PackAsToolShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
+ DotNetAppHostExecutableNameWithoutExtension="$(_DotNetAppHostExecutableNameWithoutExtension)"
+ DotNetComHostLibraryNameWithoutExtension="$(_DotNetComHostLibraryNameWithoutExtension)"
+ DotNetIjwHostLibraryNameWithoutExtension="$(_DotNetIjwHostLibraryNameWithoutExtension)"
+ RuntimeGraphPath="$(BundledRuntimeIdentifierGraphFile)"
+ KnownAppHostPacks="@(KnownAppHostPack)">
+
+ <Output TaskParameter="PackagesToDownload" ItemName="_PackageToDownload" />
+ <Output TaskParameter="AppHost" ItemName="AppHostPack" />
+ <Output TaskParameter="ComHost" ItemName="ComHostPack" />
+ <Output TaskParameter="IjwHost" ItemName="IjwHostPack" />
+ <Output TaskParameter="PackAsToolShimAppHostPacks" ItemName="PackAsToolShimAppHostPack" />
+
+ </ResolveAppHosts>
+
+ <PropertyGroup Condition="'$(UsePackageDownload)' == ''">
+ <UsePackageDownload Condition="'$(MSBuildRuntimeType)' == 'Core'">true</UsePackageDownload>
+ <UsePackageDownload Condition="'$(PackageDownloadSupported)' == 'true'">true</UsePackageDownload>
+ <UsePackageDownload Condition="'$(UsePackageDownload)' == ''">false</UsePackageDownload>
+ </PropertyGroup>
+
+ <ItemGroup Condition="'$(UsePackageDownload)' == 'true'">
+ <PackageDownload Include="@(_PackageToDownload)">
+ <Version>[%(_PackageToDownload.Version)]</Version>
+ </PackageDownload>
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(UsePackageDownload)' != 'true'">
+ <PackageReference Include="@(_PackageToDownload)"
+ IsImplicitlyDefined="true"
+ PrivateAssets="all"
+ ExcludeAssets="all" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ AddTransitiveFrameworkReferences
+
+ Adds FrameworkReference items for shared frameworks which weren't directly referenced,
+ but were referenced transitively via a project or package reference. NuGet writes these
+ to the assets file, and the ResolvePackageAssets target adds them to the TransitiveFrameworkReference
+ item. Here, we add them to FrameworkReference if they aren't already referenced.
+ ============================================================
+ -->
+ <Target Name="AddTransitiveFrameworkReferences" AfterTargets="ResolvePackageAssets"
+ Condition="'@(TransitiveFrameworkReference)' != ''" >
+
+ <ItemGroup>
+ <FrameworkReference Include="@(TransitiveFrameworkReference)" Exclude="@(FrameworkReference)"/>
+ </ItemGroup>
+
+ </Target>
+
+ <UsingTask TaskName="ResolveFrameworkReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ ResolveFrameworkReferences
+
+ Resolves paths to various FrameworkReference-related items (targeting packs, runtime packs,
+ app host packs). Some of these may already have had the path set if they were in the
+ NetCoreTargetingPackRoot folder. Others which were downloaded as NuGet packages will
+ need to have the path set here.
+ ============================================================
+ -->
+ <Target Name="ResolveFrameworkReferences" DependsOnTargets="ProcessFrameworkReferences;ResolvePackageAssets"
+ Condition="'@(FrameworkReference)' != ''"
+ Returns="@(ResolvedFrameworkReference)">
+
+ <GetPackageDirectory
+ Items="@(TargetingPack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="ResolvedTargetingPack" />
+
+ </GetPackageDirectory>
+
+ <ItemGroup>
+ <ResolvedTargetingPack Condition="'%(ResolvedTargetingPack.Path)' == '' and '%(ResolvedTargetingPack.PackageDirectory)' != ''">
+ <Path>%(ResolvedTargetingPack.PackageDirectory)</Path>
+ </ResolvedTargetingPack>
+ </ItemGroup>
+
+ <GetPackageDirectory
+ Items="@(AppHostPack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="ResolvedAppHostPack" />
+
+ </GetPackageDirectory>
+
+ <GetPackageDirectory
+ Items="@(PackAsToolShimAppHostPack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="_ApphostsForShimRuntimeIdentifiersGetPackageDirectory" />
+
+ </GetPackageDirectory>
+
+ <GetPackageDirectory
+ Items="@(ComHostPack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="ResolvedComHostPack" />
+
+ </GetPackageDirectory>
+
+ <GetPackageDirectory
+ Items="@(IjwHostPack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="ResolvedIjwHostPack" />
+ </GetPackageDirectory>
+
+ <ItemGroup>
+ <_ApphostsForShimRuntimeIdentifiers Include="%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.PackageDirectory)\%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.PathInPackage)" >
+ <RuntimeIdentifier>%(_ApphostsForShimRuntimeIdentifiersGetPackageDirectory.RuntimeIdentifier)</RuntimeIdentifier>
+ </_ApphostsForShimRuntimeIdentifiers>
+ </ItemGroup>
+
+ <ItemGroup>
+ <ResolvedAppHostPack Condition="'%(ResolvedAppHostPack.Path)' == '' and '%(ResolvedAppHostPack.PackageDirectory)' != ''">
+ <Path>%(ResolvedAppHostPack.PackageDirectory)\%(ResolvedAppHostPack.PathInPackage)</Path>
+ </ResolvedAppHostPack>
+ </ItemGroup>
+
+ <PropertyGroup Condition="'@(ResolvedAppHostPack)' != '' And '$(AppHostSourcePath)' == ''">
+ <AppHostSourcePath>@(ResolvedAppHostPack->'%(Path)')</AppHostSourcePath>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ResolvedComHostPack Condition="'%(ResolvedComHostPack.Path)' == '' and '%(ResolvedComHostPack.PackageDirectory)' != ''">
+ <Path>%(ResolvedComHostPack.PackageDirectory)\%(ResolvedComHostPack.PathInPackage)</Path>
+ </ResolvedComHostPack>
+ </ItemGroup>
+
+ <PropertyGroup Condition="'@(ResolvedComHostPack)' != '' And '$(ComHostSourcePath)' == ''">
+ <ComHostSourcePath>@(ResolvedComHostPack->'%(Path)')</ComHostSourcePath>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ResolvedIjwHostPack Condition="'%(ResolvedIjwHostPack.Path)' == '' and '%(ResolvedIjwHostPack.PackageDirectory)' != ''">
+ <Path>%(ResolvedIjwHostPack.PackageDirectory)\%(ResolvedIjwHostPack.PathInPackage)</Path>
+ </ResolvedIjwHostPack>
+ </ItemGroup>
+
+ <PropertyGroup Condition="'@(ResolvedIjwHostPack)' != '' And '$(IjwHostSourcePath)' == ''">
+ <IjwHostSourcePath>@(ResolvedIjwHostPack->'%(Path)')</IjwHostSourcePath>
+ </PropertyGroup>
+
+ <GetPackageDirectory
+ Items="@(RuntimePack)"
+ PackageFolders="@(AssetsFilePackageFolder)">
+
+ <Output TaskParameter="Output" ItemName="ResolvedRuntimePack" />
+
+ </GetPackageDirectory>
+
+ <ResolveFrameworkReferences
+ FrameworkReferences="@(FrameworkReference)"
+ ResolvedTargetingPacks="@(ResolvedTargetingPack)"
+ ResolvedRuntimePacks="@(ResolvedRuntimePack)">
+
+ <Output TaskParameter="ResolvedFrameworkReferences" ItemName="ResolvedFrameworkReference" />
+
+ </ResolveFrameworkReferences>
+
+ </Target>
+
+ <UsingTask TaskName="GetPackageDirectory" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="ResolveTargetingPackAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ ResolveTargetingPackAssets
+
+ Resolve assets (primarily references) from targeting packs.
+ ============================================================
+ -->
+ <Target Name="ResolveTargetingPackAssets" DependsOnTargets="ResolveFrameworkReferences"
+ Condition="'@(FrameworkReference)' != ''">
+
+ <!-- For design-time builds, don't generate an error if a targeting pack isn't available (ie because it hasn't been restored yet) -->
+ <PropertyGroup Condition="'$(GenerateErrorForMissingTargetingPacks)' == ''">
+ <GenerateErrorForMissingTargetingPacks>true</GenerateErrorForMissingTargetingPacks>
+ <GenerateErrorForMissingTargetingPacks Condition="'$(DesignTimeBuild)' == 'true'">false</GenerateErrorForMissingTargetingPacks>
+ </PropertyGroup>
+
+ <ResolveTargetingPackAssets FrameworkReferences="@(FrameworkReference)"
+ ResolvedTargetingPacks="@(ResolvedTargetingPack)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ GenerateErrorForMissingTargetingPacks="$(GenerateErrorForMissingTargetingPacks)">
+ <Output TaskParameter="ReferencesToAdd" ItemName="Reference" />
+ <Output TaskParameter="PlatformManifests" ItemName="PlatformManifestsFromTargetingPacks" />
+ <Output TaskParameter="PackageConflictPreferredPackages" PropertyName="PackageConflictPreferredPackages" />
+ <Output TaskParameter="PackageConflictOverrides" ItemName="PackageConflictOverrides" />
+ <Output TaskParameter="UsedRuntimeFrameworks" ItemName="_UsedRuntimeFramework" />
+
+ </ResolveTargetingPackAssets>
+
+ <ItemGroup Condition="'$(RuntimeIdentifier)' == '' or '$(SelfContained)' != 'true'">
+ <PackageConflictPlatformManifests Include="@(PlatformManifestsFromTargetingPacks)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <RuntimeFramework Remove="@(RuntimeFramework)" />
+ <RuntimeFramework Include="@(_UsedRuntimeFramework)" />
+ </ItemGroup>
+ </Target>
+
+ <UsingTask TaskName="ResolveRuntimePackAssets" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ ResolveRuntimePackAssets
+
+ Resolve assets from runtime packs.
+ ============================================================
+ -->
+ <Target Name="ResolveRuntimePackAssets" DependsOnTargets="ResolveFrameworkReferences"
+ Condition="'@(RuntimePack)' != ''">
+
+ <ResolveRuntimePackAssets FrameworkReferences="@(FrameworkReference)"
+ ResolvedRuntimePacks="@(ResolvedRuntimePack)"
+ UnavailableRuntimePacks="@(UnavailableRuntimePack)"
+ SatelliteResourceLanguages="$(SatelliteResourceLanguages)"
+ DesignTimeBuild="$(DesignTimeBuild)">
+ <Output TaskParameter="RuntimePackAssets" ItemName="RuntimePackAsset" />
+ </ResolveRuntimePackAssets>
+
+ <ItemGroup>
+ <ReferenceCopyLocalPaths Include="@(RuntimePackAsset)"
+ Condition="'$(CopyLocalLockFileAssemblies)' == 'true' and '$(SelfContained)' == 'true'" />
+ </ItemGroup>
+
+
+ </Target>
+
+ <!--
+ Adds metadata so the SDK will generate the UserSecretsIdAttribute.
+
+ This is associated with ASP.NET Core, but may be used in projects that don't use the Web SDK (especially test projects).
+ So it is in the base .NET SDK. (It used to be in the Microsoft.AspNetCore.App package, but now that that's a targeting
+ pack we don't support importing build logic from it directly).
+
+ If GeneratedUserSecretsAttributeFile is set, that means Microsoft.Extensions.Configuration.UserSecrets 2.1
+ or earlier was referenced as a package. This didn't use the AssemblyAttribute item group, so we cannot
+ avoid duplicate AssemblyAttribute items without skipping this target altogether..
+ -->
+ <Target Name="_GetUserSecretsAssemblyAttribute"
+ BeforeTargets="GetAssemblyAttributes"
+ Condition=" '$(UserSecretsId)' != '' AND '$(GenerateUserSecretsAttribute)' != 'false' AND '$(GeneratedUserSecretsAttributeFile)' == '' ">
+
+ <!--
+ If the Microsoft.Extensions.Configuration.UserSecrets package 2.2 or higher is referenced directly,
+ it will also add an AssemblyAttribute item. Since this attribute only allows one per assembly, do not
+ duplicate the item.
+
+ Also don't add the attribute if there is neither a Microsoft.AspNetCore.App FrameworkReference nor a
+ Microsoft.Extensions.Configuration.UserSecrets PackageReference, in order to preserve 2.x SDK behavior
+ where projects would successfully build if they define the UserSecretsId property but don't reference
+ the corresponding API.
+
+ -->
+ <ItemGroup Condition=" @(AssemblyAttribute->WithMetadataValue('Identity', 'Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute')->Count()) == 0 And
+ (@(FrameworkReference->WithMetadataValue('Identity', 'Microsoft.AspNetCore.App')->Count()) != 0 Or
+ @(PackageReference->WithMetadataValue('Identity', 'Microsoft.Extensions.Configuration.UserSecrets')->Count()) != 0)">
+ <AssemblyAttribute Include="Microsoft.Extensions.Configuration.UserSecrets.UserSecretsIdAttribute">
+ <_Parameter1>$(UserSecretsId.Trim())</_Parameter1>
+ </AssemblyAttribute>
+ </ItemGroup>
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportPublishProfile.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportPublishProfile.targets
new file mode 100644
index 0000000000..7be356458e
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.ImportPublishProfile.targets
@@ -0,0 +1,36 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.ImportPublishProfile.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <!-- Default to having imported the publish profile so the Web SDK doesn't also attempt to do so. -->
+ <PublishProfileImported>true</PublishProfileImported>
+ <_PublishProfileDesignerFolder Condition="'$(AppDesignerFolder)' != ''">$(AppDesignerFolder)</_PublishProfileDesignerFolder>
+ <_PublishProfileDesignerFolder Condition="'$(_PublishProfileDesignerFolder)' == ''">Properties</_PublishProfileDesignerFolder>
+ <_PublishProfileRootFolder Condition="'$(_PublishProfileRootFolder)' == ''">$(MSBuildProjectDirectory)\$(_PublishProfileDesignerFolder)\PublishProfiles\</_PublishProfileRootFolder>
+ <PublishProfileName Condition="'$(PublishProfileName)' == '' and '$(PublishProfile)' != ''">$([System.IO.Path]::GetFileNameWithoutExtension($(PublishProfile)))</PublishProfileName>
+ <PublishProfileFullPath Condition="'$(PublishProfileFullPath)' == '' and '$(PublishProfileName)' != ''">$(_PublishProfileRootFolder)$(PublishProfileName).pubxml</PublishProfileFullPath>
+ <WebPublishProfileFile Condition="'$(WebPublishProfileFile)' == '' and Exists('$(PublishProfileFullPath)')">$(PublishProfileFullPath)</WebPublishProfileFile>
+
+ <!-- If the publish profile doesn't exist, mark as not imported.
+ This allows the Web SDK to import some default profiles that come with the Web SDK.
+ Publishing in Visual Studio sets `WebPublishProfileFile` as a global property.
+ Therefore, check that `ProjectToOverrideProjectExtensionsPath` is equal to `MSBuildProjectFullPath`
+ to limit the import to the project being published. -->
+ <PublishProfileImported Condition="('$(ProjectToOverrideProjectExtensionsPath)' != '' and
+ '$(ProjectToOverrideProjectExtensionsPath)' != '$(MSBuildProjectFullPath)') or
+ '$(WebPublishProfileFile)' == '' or
+ !Exists('$(WebPublishProfileFile)')">false</PublishProfileImported>
+ </PropertyGroup>
+
+ <Import Project="$(WebPublishProfileFile)" Condition="'$(PublishProfileImported)' == 'true'" />
+ <Import Project="$(WebPublishProfileFile).user" Condition="'$(PublishProfileImported)' == 'true' and Exists('$(WebPublishProfileFile).user')" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.props
new file mode 100644
index 0000000000..fa338ebfc8
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.props
@@ -0,0 +1,34 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.VisualBasic.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <WarningLevel Condition=" '$(WarningLevel)' == '' ">1</WarningLevel>
+ <NoWarn Condition=" '$(NoWarn)' == '' ">41999,42016,42017,42018,42019,42020,42021,42022,42032,42036</NoWarn>
+ <OptionExplicit Condition=" '$(OptionExplicit)' == '' ">On</OptionExplicit>
+ <OptionCompare Condition=" '$(OptionCompare)' == '' ">Binary</OptionCompare>
+ <OptionStrict Condition=" '$(OptionStrict)' == '' ">Off</OptionStrict>
+ <OptionInfer Condition=" '$(OptionInfer)' == '' ">On</OptionInfer>
+
+ <!-- Remove the line below once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
+ <WarningsAsErrors Condition=" '$(WarningsAsErrors)' == '' ">NU1605</WarningsAsErrors>
+ </PropertyGroup>
+
+ <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+ <DefineDebug Condition=" '$(DefineDebug)' == '' ">true</DefineDebug>
+ <DefineTrace Condition=" '$(DefineTrace)' == '' ">true</DefineTrace>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+ <DefineTrace Condition=" '$(DefineTrace)' == '' ">true</DefineTrace>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.targets
new file mode 100644
index 0000000000..f2caf8d0a6
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.VisualBasic.targets
@@ -0,0 +1,133 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.VisualBasic.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+ <PropertyGroup>
+ <DisableImplicitNamespaceImports Condition="'$(DisableImplicitNamespaceImports)'==''">$(DisableImplicitFrameworkReferences)</DisableImplicitNamespaceImports>
+ </PropertyGroup>
+ <ItemGroup Condition=" '$(DisableImplicitNamespaceImports)' != 'true' and '$(TargetFrameworkIdentifier)' == '.NETFramework'">
+ <!-- These namespaces are present in 2.0 Framework assemblies -->
+ <Import Include="Microsoft.VisualBasic" />
+ <Import Include="System" />
+ <Import Include="System.Collections" />
+ <Import Include="System.Collections.Generic" />
+ <Import Include="System.Data" />
+ <Import Include="System.Diagnostics" />
+ <!-- These namespaces are introduced in 3.5 Framework assemblies -->
+ <Import Include="System.Linq" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '3.5' "/>
+ <Import Include="System.Xml.Linq" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '3.5' "/>
+ <!-- This namespace is introduced in 4.0 Framework assemblies -->
+ <Import Include="System.Threading.Tasks" Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.0' "/>
+ </ItemGroup>
+ <ItemGroup Condition=" '$(DisableImplicitNamespaceImports)' != 'true' and '$(_IsNETCoreOrNETStandard)' == 'true'">
+ <Import Include="Microsoft.VisualBasic" />
+ <Import Include="System" />
+ <Import Include="System.Collections" />
+ <Import Include="System.Collections.Generic" />
+ <Import Include="System.Diagnostics" />
+ <Import Include="System.Linq" />
+ <Import Include="System.Xml.Linq" />
+ <Import Include="System.Threading.Tasks" />
+ </ItemGroup>
+ <PropertyGroup Condition="'$(DisableImplicitConfigurationDefines)' != 'true' and '$(Configuration)' != ''">
+ <ImplicitConfigurationDefine>$(Configuration.ToUpperInvariant())</ImplicitConfigurationDefine>
+
+ <!-- Replace dashes and periods in the configuration with underscores. This makes it more likely that
+ the resulting compilation constant will be a valid C# conditional compilation symbol. As the set
+ of characters that aren't allowed is essentially open-ended, there's probably not a good way to
+ fully sanitize the Configuration in MSBuild evaluation. If the resulting string still isn't a
+ valid conditional combilation symbol, then the compiler will generate the following error and
+ the define will be ignored:
+ warning MSB3052: The parameter to the compiler is invalid, '/define:0BAD_DEFINE' will be ignored.
+ -->
+
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('-', '_'))</ImplicitConfigurationDefine>
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace('.', '_'))</ImplicitConfigurationDefine>
+ <ImplicitConfigurationDefine>$(ImplicitConfigurationDefine.Replace(' ', '_'))</ImplicitConfigurationDefine>
+ <!-- In F# and C# this is called DefineConstants, VB is idiosyncratic and calls it FinalDefineConstants -->
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <FinalDefineConstants Condition="'$(VersionlessImplicitFrameworkDefine)' != ''">$(FinalDefineConstants),$(VersionlessImplicitFrameworkDefine)=-1</FinalDefineConstants>
+ <FinalDefineConstants Condition="'$(ImplicitFrameworkDefine)' != ''">$(FinalDefineConstants),$(ImplicitFrameworkDefine)=-1</FinalDefineConstants>
+ <FinalDefineConstants Condition="'$(DefineDebug)' != 'true' and '$(ImplicitConfigurationDefine)' != ''">$(FinalDefineConstants),$(ImplicitConfigurationDefine)=-1</FinalDefineConstants>
+ </PropertyGroup>
+
+ <!--
+ By default, VBRuntime is chosen as follows:
+
+ .NET Framework:
+ Same as classic vbproj. $(FrameworkPathOverride) is passed as
+ /sdkpath to compiler and Microsoft.VisualBasic.dll will be used
+ from there even if there is no explicit reference to it. This is
+ accomplished by leaving $(VBRuntime) unset.
+
+ .NET Core 3.0+:
+ Locate Microsoft.VisualBasic among references and pass it as
+ /vbruntime to compiler.
+
+ .NET Core < 3.0 or .NET Standard:
+ Use embedded VB runtime as there is no Microsoft.VisualBasic.dll
+ available that is complete enough to serve as /vbruntime.
+
+ These defaults can be overridden as follows:
+
+ $(UseReferencedVBRuntime) == true:
+ Use referenced Microsoft.VisualBasic regardless of TFM.
+
+ This is an escape hatch for a custom Microsoft.VisualBasic reference
+ that can work as /vbruntime on a target framework other than .NET Core 3.0+
+
+ $(VBRuntime) != '':
+ Pass it through to compiler unchanged.
+ -->
+
+ <PropertyGroup Condition="'$(UseReferencedVBRuntime)' == ''
+ and '$(VBRuntime)' == ''
+ and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'
+ and '$(_TargetFrameworkVersionWithoutV)' >= '3.0'">
+ <UseReferencedVBRuntime>true</UseReferencedVBRuntime>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(VBRuntime)' == ''
+ and '$(UseReferencedVBRuntime)' != 'true'
+ and '$(TargetFrameworkIdentifier)' != '.NETFramework'">
+ <VBRuntime>Embed</VBRuntime>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' != '.NETFramework'">
+ <!--
+ Prevent the .NET Framework compiler from trying to locate assemblies
+ in the .NET Framework directory when not targeting .NET Framework
+ -->
+ <DisableSdkPath Condition="'$(DisableSdkPath)' == ''">true</DisableSdkPath>
+
+ <!--
+ VB Runtime does not yet have enough support for My.* outside .NET Framework,
+ so default MyType=Empty for non .NET Framework. Project templates will be
+ responsible for setting MyType to non-Empty (Console, Windows, etc.) when
+ the VB Runtime can allow it and as appropriate for the project type.
+ -->
+ <FinalDefineConstants Condition="'$(MyType)' == ''">$(FinalDefineConstants),_MyType=&quot;Empty&quot;</FinalDefineConstants>
+ </PropertyGroup>
+
+ <!--
+ NOTE: We must hook directly to CoreCompile for compatibility with two phase XAML
+ build. We also must not pull in a dependency on ResolveAssemblyReferences
+ as the generated temporary project for xaml compilation has a hard-coded list
+ of items in ReferencePath, and does not need to run RAR.
+ -->
+ <Target Name="_UseReferencedVBRuntime" Condition="'$(UseReferencedVBRuntime)' == 'true'" BeforeTargets="CoreCompile">
+ <PropertyGroup>
+ <VBRuntime Condition="'%(ReferencePath.FileName)' == 'Microsoft.VisualBasic'">%(ReferencePath.Identity)</VBRuntime>
+ </PropertyGroup>
+ </Target>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.props
new file mode 100644
index 0000000000..170ca24c7a
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.props
@@ -0,0 +1,125 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.props
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup>
+ <!-- This property disables the conflict resolution logic from the Microsoft.Packaging.Tools package, which is superceded by the logic here in the SDK -->
+ <DisableHandlePackageFileConflicts>true</DisableHandlePackageFileConflicts>
+ </PropertyGroup>
+
+ <!-- Default configuration and platform to Debug|AnyCPU-->
+ <PropertyGroup>
+ <Configurations Condition=" '$(Configurations)' == '' ">Debug;Release</Configurations>
+ <Platforms Condition=" '$(Platforms)' == '' ">AnyCPU</Platforms>
+ <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
+ <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ </PropertyGroup>
+
+ <!-- User-facing configuration-agnostic defaults -->
+ <PropertyGroup>
+ <OutputType Condition=" '$(OutputType)' == '' ">Library</OutputType>
+ <FileAlignment Condition=" '$(FileAlignment)' == '' ">512</FileAlignment>
+ <ErrorReport Condition=" '$(ErrorReport)' == '' ">prompt</ErrorReport>
+ <AssemblyName Condition=" '$(AssemblyName)' == '' ">$(MSBuildProjectName)</AssemblyName>
+ <RootNamespace Condition=" '$(RootNamespace)' == '' ">$(MSBuildProjectName)</RootNamespace>
+ <Deterministic Condition=" '$(Deterministic)' == '' ">true</Deterministic>
+ </PropertyGroup>
+
+ <!-- User-facing configuration-specific defaults -->
+
+ <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
+ <DebugSymbols Condition=" '$(DebugSymbols)' == '' ">true</DebugSymbols>
+ <Optimize Condition=" '$(Optimize)' == '' ">false</Optimize>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
+ <Optimize Condition=" '$(Optimize)' == '' ">true</Optimize>
+ </PropertyGroup>
+
+ <!-- User-facing platform-specific defaults -->
+
+ <!--
+ NOTE:
+
+ * We cannot compare against $(Platform) directly as that will give VS cause to instantiate extra
+ configurations, for each combination, which leads to performance problems and clutter in the sln
+ in the common AnyCPU-only case.
+
+ * We cannot just set $(PlatformTarget) to $(Platform) here because $(Platform) can be set to anything
+ at the solution level, but there are a fixed set valid $(PlatformTarget) values that can be passed
+ to the compiler. It is up to the user to explicitly set PlatformTarget to non-AnyCPU (if desired)
+ outside the 1:1 defaults below.
+ -->
+ <PropertyGroup>
+ <_PlatformWithoutConfigurationInference>$(Platform)</_PlatformWithoutConfigurationInference>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x64' ">
+ <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x64</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'x86' ">
+ <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">x86</PlatformTarget>
+ </PropertyGroup>
+ <PropertyGroup Condition=" '$(_PlatformWithoutConfigurationInference)' == 'ARM' ">
+ <PlatformTarget Condition=" '$(PlatformTarget)' == '' ">ARM</PlatformTarget>
+ </PropertyGroup>
+
+ <!-- Default settings for all projects built with this Sdk package -->
+ <PropertyGroup>
+ <DebugType Condition=" '$(DebugType)' == '' ">portable</DebugType>
+
+ <!-- This will turn off the base UWP-specific 'ResolveNuGetPackages' target -->
+ <ResolveNuGetPackages>false</ResolveNuGetPackages>
+
+ <!-- Skip import of Microsoft.NuGet.props and Microsoft.NuGet.targets -->
+ <SkipImportNuGetProps>true</SkipImportNuGetProps>
+ <SkipImportNuGetBuildTargets>true</SkipImportNuGetBuildTargets>
+
+ <!-- NuGet should always restore .NET SDK projects with "PackageReference" style restore. Setting this property will
+ cause the right thing to happen even if there aren't any PackageReference items in the project, such as when
+ a project targets .NET Framework and doesn't have any direct package dependencies. -->
+ <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
+
+ <!-- Exclude GAC, registry, output directory from search paths. -->
+ <AssemblySearchPaths Condition=" '$(AssemblySearchPaths)' == '' ">{CandidateAssemblyFiles};{HintPathFromItem};{TargetFrameworkDirectory};{RawFileName}</AssemblySearchPaths>
+ <DesignTimeAssemblySearchPaths Condition=" '$(DesignTimeAssemblySearchPaths)' == '' ">$(AssemblySearchPaths)</DesignTimeAssemblySearchPaths>
+
+ <AllowUnsafeBlocks Condition="'$(AllowUnsafeBlocks)'==''">false</AllowUnsafeBlocks>
+ <TreatWarningsAsErrors Condition="'$(TreatWarningsAsErrors)'==''">false</TreatWarningsAsErrors>
+ <Prefer32Bit Condition="'$(Prefer32Bit)'==''">false</Prefer32Bit>
+ <SignAssembly Condition="'$(SignAssembly)'==''">false</SignAssembly>
+ <DelaySign Condition="'$(DelaySign)'==''">false</DelaySign>
+ <GeneratePackageOnBuild Condition="'$(GeneratePackageOnBuild)'==''">false</GeneratePackageOnBuild>
+ <PackageRequireLicenseAcceptance Condition="'$(PackageRequireLicenseAcceptance)'==''">false</PackageRequireLicenseAcceptance>
+ <DebugSymbols Condition="'$(DebugSymbols)'==''">false</DebugSymbols>
+ <CheckForOverflowUnderflow Condition="'$(CheckForOverflowUnderflow)'==''">false</CheckForOverflowUnderflow>
+
+ <!-- Uncomment this once https://github.com/Microsoft/visualfsharp/issues/3207 gets fixed -->
+ <!-- <WarningsAsErrors Condition=" '$(WarningsAsErrors)' == '' ">NU1605</WarningsAsErrors> -->
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <!-- Path to project that the .NET CLI will build in order to generate deps.json files for .NET CLI tools -->
+ <ToolDepsJsonGeneratorProject>$(MSBuildThisFileDirectory)GenerateDeps\GenerateDeps.proj</ToolDepsJsonGeneratorProject>
+ </PropertyGroup>
+
+ <!-- Default item includes (globs and implicit references) -->
+ <Import Project="Microsoft.NET.Sdk.DefaultItems.props" />
+
+ <!-- List of supported .NET Core and .NET Standard TFMs -->
+ <Import Project="Microsoft.NET.SupportedTargetFrameworks.props" />
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.props" Condition="'$(MSBuildProjectExtension)' == '.csproj'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.props" Condition="'$(MSBuildProjectExtension)' == '.vbproj'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.props" Condition="'$(MSBuildProjectExtension)' == '.fsproj'" />
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.props" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackProjectTool.props" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets
new file mode 100644
index 0000000000..facdb64fa0
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.Sdk.targets
@@ -0,0 +1,878 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.Sdk.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <PropertyGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">
+ <!-- Skip import of Microsoft.NuGet.props and Microsoft.NuGet.targets -->
+ <SkipImportNuGetProps>true</SkipImportNuGetProps>
+ <SkipImportNuGetBuildTargets>true</SkipImportNuGetBuildTargets>
+ </PropertyGroup>
+
+ <!-- Workaround: https://github.com/Microsoft/msbuild/issues/1293 -->
+ <PropertyGroup Condition="'$(MSBuildRuntimeType)' == 'Core' Or '$(TargetFrameworkIdentifier)' != '.NETFramework'">
+ <GenerateResourceMSBuildArchitecture Condition=" '$(GenerateResourceMSBuildArchitecture)' == '' ">CurrentArchitecture</GenerateResourceMSBuildArchitecture>
+ <GenerateResourceMSBuildRuntime Condition=" '$(GenerateResourceMSBuildRuntime)' == '' ">CurrentRuntime</GenerateResourceMSBuildRuntime>
+ </PropertyGroup>
+
+ <Import Project="Microsoft.NET.Sdk.Common.targets" />
+
+ <ImportGroup>
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolution.targets" Condition="Exists('$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolution.targets') and '$(Language)' != 'C++'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolutionStubs.targets" Condition="Exists('$(MSBuildThisFileDirectory)Microsoft.PackageDependencyResolutionStubs.targets') and '$(Language)' == 'C++'" />
+ </ImportGroup>
+
+ <Import Project="Microsoft.NET.Sdk.DefaultItems.targets" />
+
+ <Import Project="Microsoft.NET.Sdk.FrameworkReferenceResolution.targets" />
+
+ <UsingTask TaskName="GenerateDepsFile" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="GenerateRuntimeConfigurationFiles" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="GetAssemblyVersion" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="GenerateSatelliteAssemblies" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <PropertyGroup>
+ <DisableStandardFrameworkResolution Condition="'$(DisableStandardFrameworkResolution)' == ''">$(_IsNETCoreOrNETStandard)</DisableStandardFrameworkResolution>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <EnableDynamicLoading Condition="'$(EnableDynamicLoading)' == '' and '$(EnableComHosting)' == 'true'">true</EnableDynamicLoading>
+ <GenerateRuntimeConfigurationFiles Condition=" '$(GenerateRuntimeConfigurationFiles)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and ('$(HasRuntimeOutput)' == 'true' or '$(EnableComHosting)' == 'true' or '$(EnableDynamicLoading)' == 'true') ">true</GenerateRuntimeConfigurationFiles>
+ <UserRuntimeConfig Condition=" '$(UserRuntimeConfig)' == '' ">$(MSBuildProjectDirectory)/runtimeconfig.template.json</UserRuntimeConfig>
+ <GenerateSatelliteAssembliesForCore Condition=" '$(GenerateSatelliteAssembliesForCore)' == '' and '$(MSBuildRuntimeType)' == 'Core' ">true</GenerateSatelliteAssembliesForCore>
+ <ComputeNETCoreBuildOutputFiles Condition=" '$(ComputeNETCoreBuildOutputFiles)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">true</ComputeNETCoreBuildOutputFiles>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsFile)" />
+ <GenerateRuntimeConfigurationFilesInputs Include="$(ProjectAssetsCacheFile)" />
+ <GenerateRuntimeConfigurationFilesInputs Include="$(UserRuntimeConfig)" Condition=" Exists($(UserRuntimeConfig)) " />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <ProjectDepsFileName Condition="'$(ProjectDepsFileName)' == ''">$(AssemblyName).deps.json</ProjectDepsFileName>
+ <ProjectDepsFilePath Condition="'$(ProjectDepsFilePath)' == ''">$(TargetDir)$(ProjectDepsFileName)</ProjectDepsFilePath>
+ <ProjectRuntimeConfigFileName Condition="'$(ProjectRuntimeConfigFileName)' == ''">$(AssemblyName).runtimeconfig.json</ProjectRuntimeConfigFileName>
+ <ProjectRuntimeConfigFilePath Condition="'$(ProjectRuntimeConfigFilePath)' == ''">$(TargetDir)$(ProjectRuntimeConfigFileName)</ProjectRuntimeConfigFilePath>
+ <ProjectRuntimeConfigDevFilePath Condition="'$(ProjectRuntimeConfigDevFilePath)' == ''">$(TargetDir)$(AssemblyName).runtimeconfig.dev.json</ProjectRuntimeConfigDevFilePath>
+ <IncludeMainProjectInDepsFile Condition=" '$(IncludeMainProjectInDepsFile)' == '' ">true</IncludeMainProjectInDepsFile>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <_NativeLibraryPrefix Condition="'$(_NativeLibraryPrefix)' == '' and !$(RuntimeIdentifier.StartsWith('win'))">lib</_NativeLibraryPrefix>
+
+ <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == '' and $(RuntimeIdentifier.StartsWith('win'))">.dll</_NativeLibraryExtension>
+ <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == '' and $(RuntimeIdentifier.StartsWith('osx'))">.dylib</_NativeLibraryExtension>
+ <_NativeLibraryExtension Condition="'$(_NativeLibraryExtension)' == ''">.so</_NativeLibraryExtension>
+
+ <_NativeExecutableExtension Condition="'$(_NativeExecutableExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.exe</_NativeExecutableExtension>
+ <_ComHostLibraryExtension Condition="'$(_ComHostLibraryExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.dll</_ComHostLibraryExtension>
+ <_IjwHostLibraryExtension Condition="'$(_IjwHostLibraryExtension)' == '' and ($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win')))">.dll</_IjwHostLibraryExtension>
+
+ <_DotNetHostExecutableName>dotnet$(_NativeExecutableExtension)</_DotNetHostExecutableName>
+ <_DotNetAppHostExecutableNameWithoutExtension>apphost</_DotNetAppHostExecutableNameWithoutExtension>
+ <_DotNetAppHostExecutableName>$(_DotNetAppHostExecutableNameWithoutExtension)$(_NativeExecutableExtension)</_DotNetAppHostExecutableName>
+
+ <_DotNetComHostLibraryNameWithoutExtension>comhost</_DotNetComHostLibraryNameWithoutExtension>
+ <_DotNetComHostLibraryName>$(_DotNetComHostLibraryNameWithoutExtension)$(_ComHostLibraryExtension)</_DotNetComHostLibraryName>
+ <_DotNetIjwHostLibraryNameWithoutExtension>Ijwhost</_DotNetIjwHostLibraryNameWithoutExtension>
+ <_DotNetIjwHostLibraryName>$(_DotNetIjwHostLibraryNameWithoutExtension)$(_IjwHostLibraryExtension)</_DotNetIjwHostLibraryName>
+ <_DotNetHostPolicyLibraryName>$(_NativeLibraryPrefix)hostpolicy$(_NativeLibraryExtension)</_DotNetHostPolicyLibraryName>
+ <_DotNetHostFxrLibraryName>$(_NativeLibraryPrefix)hostfxr$(_NativeLibraryExtension)</_DotNetHostFxrLibraryName>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <_DefaultUserProfileRuntimeStorePath>$(HOME)</_DefaultUserProfileRuntimeStorePath>
+ <_DefaultUserProfileRuntimeStorePath Condition="'$(OS)' == 'Windows_NT'">$(USERPROFILE)</_DefaultUserProfileRuntimeStorePath>
+ <_DefaultUserProfileRuntimeStorePath>$([System.IO.Path]::Combine($(_DefaultUserProfileRuntimeStorePath), '.dotnet', 'store'))</_DefaultUserProfileRuntimeStorePath>
+ <UserProfileRuntimeStorePath Condition="'$(UserProfileRuntimeStorePath)' == ''">$(_DefaultUserProfileRuntimeStorePath)</UserProfileRuntimeStorePath>
+ </PropertyGroup>
+
+ <!-- Opt into .NET Core resource-serialization strategy by default when targeting frameworks
+ that support it by default.
+ -->
+ <PropertyGroup>
+ <GenerateResourceUsePreserializedResources
+ Condition="'$(GenerateResourceUsePreserializedResources)' == '' and
+ ('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' >= '3.0')">true</GenerateResourceUsePreserializedResources>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <EmbeddedResourceUseDependentUponConvention
+ Condition="'$(EmbeddedResourceUseDependentUponConvention)' == '' and
+ (('$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' >= '3.0') or
+ ('$(TargetFrameworkIdentifier)' == '.NETStandard' and '$(_TargetFrameworkVersionWithoutV)' >= '2.1'))">true</EmbeddedResourceUseDependentUponConvention>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <CoreBuildDependsOn>
+ _CheckForBuildWithNoBuild;
+ $(CoreBuildDependsOn);
+ GenerateBuildDependencyFile;
+ GenerateBuildRuntimeConfigurationFiles
+ </CoreBuildDependsOn>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <CoreCleanDependsOn>
+ _SdkBeforeClean;
+ $(CoreCleanDependsOn)
+ </CoreCleanDependsOn>
+ </PropertyGroup>
+
+ <PropertyGroup>
+ <RebuildDependsOn>
+ _SdkBeforeRebuild;
+ $(RebuildDependsOn)
+ </RebuildDependsOn>
+ </PropertyGroup>
+
+ <!-- TODO: this target should not check GeneratePackageOnBuild.
+ remove when https://github.com/NuGet/Home/issues/7801 is fixed.
+ -->
+ <Target Name="_CheckForBuildWithNoBuild"
+ Condition="'$(NoBuild)' == 'true' and '$(GeneratePackageOnBuild)' != 'true'">
+ <NETSdkError ResourceName="NoBuildRequested" />
+ </Target>
+
+ <Target Name="_ComputePackageReferencePublish">
+ <ItemGroup>
+
+ <!-- PrivateAssets="All" means exclude from publish, unless Publish metadata is specified separately -->
+ <PackageReference Publish="false"
+ Condition="('%(PackageReference.PrivateAssets)' == 'All') And ('%(PackageReference.Publish)' == '')"/>
+
+ <_ExcludeFromPublishPackageReference Include="@(PackageReference)"
+ Condition="('%(PackageReference.Publish)' == 'false')" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ GenerateBuildDependencyFile
+
+ Generates the $(project).deps.json file during Build
+ ============================================================
+ -->
+
+ <Target Name="GenerateBuildDependencyFile"
+ DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary;
+ _HandlePackageFileConflicts;
+ _ComputeReferenceAssemblies;
+ _ComputeUserRuntimeAssemblies;
+ ResolveRuntimePackAssets;
+ _ComputePackageReferencePublish"
+ BeforeTargets="CopyFilesToOutputDirectory"
+ Condition="'$(GenerateDependencyFile)' == 'true'"
+ Inputs="$(ProjectAssetsFile);$(ProjectAssetsCacheFile);$(MSBuildAllProjects)"
+ Outputs="$(ProjectDepsFilePath)">
+
+ <!-- Set a dummy Version if it hasn't been set by DefaultAssemblyInfo.targets -->
+ <PropertyGroup Condition="'$(UsingNETSdkDefaults)' != 'true'">
+ <Version Condition="'$(Version)' == ''">1.0.0</Version>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <ResolvedCompileFileDefinitions Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' == 'Reference'" />
+ <NativeCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ <ResourceCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ <RuntimeCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ <RuntimeTargetsCopyLocalItems Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ <RuntimePackAsset Remove="@(_ConflictPackageFiles)" Condition="'%(_ConflictPackageFiles.ConflictItemType)' != 'Reference'" />
+ </ItemGroup>
+
+ <GenerateDepsFile ProjectPath="$(MSBuildProjectFullPath)"
+ AssetsFilePath="$(ProjectAssetsFile)"
+ DepsFilePath="$(ProjectDepsFilePath)"
+ TargetFramework="$(TargetFrameworkMoniker)"
+ AssemblyName="$(AssemblyName)"
+ AssemblyExtension="$(TargetExt)"
+ AssemblyVersion="$(Version)"
+ AssemblySatelliteAssemblies="@(IntermediateSatelliteAssembliesWithTargetPath)"
+ ReferencePaths="@(ReferencePath)"
+ ReferenceDependencyPaths="@(ReferenceDependencyPaths)"
+ ReferenceSatellitePaths="@(ReferenceSatellitePaths)"
+ ReferenceAssemblies="@(_ReferenceAssemblies)"
+ RuntimePackAssets="@(RuntimePackAsset)"
+ IncludeMainProject="$(IncludeMainProjectInDepsFile)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ CompilerOptions="@(DependencyFileCompilerOptions)"
+ CompileReferences="@(ResolvedCompileFileDefinitions)"
+ ResolvedNuGetFiles="@(NativeCopyLocalItems);@(ResourceCopyLocalItems);@(RuntimeCopyLocalItems)"
+ UserRuntimeAssemblies="@(UserRuntimeAssembly)"
+ ResolvedRuntimeTargetsFiles="@(RuntimeTargetsCopyLocalItems)"
+ IsSelfContained="$(SelfContained)"
+ IncludeRuntimeFileVersions="$(IncludeFileVersionsInDependencyFile)">
+ </GenerateDepsFile>
+
+ <ItemGroup>
+ <!-- Do this in an ItemGroup instead of as an output parameter of the GenerateDepsFile task so that it still gets added to the item set
+ during incremental builds when the task is skipped -->
+ <FileWrites Include="$(ProjectDepsFilePath)" Condition="Exists('$(ProjectDepsFilePath)')"/>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ GenerateBuildRuntimeConfigurationFiles
+
+ Generates the $(project).runtimeconfig.json and $(project).runtimeconfig.dev.json files during Build
+ ============================================================
+ -->
+
+ <Target Name="GenerateBuildRuntimeConfigurationFiles"
+ DependsOnTargets="_DefaultMicrosoftNETPlatformLibrary"
+ BeforeTargets="CopyFilesToOutputDirectory"
+ Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'"
+ Inputs="@(GenerateRuntimeConfigurationFilesInputs)"
+ Outputs="$(ProjectRuntimeConfigFilePath);$(ProjectRuntimeConfigDevFilePath)">
+
+ <PropertyGroup>
+ <_IsRollForwardSupported Condition="'$(_TargetFrameworkVersionWithoutV)' &gt;= '3.0'">true</_IsRollForwardSupported>
+ <RollForward Condition="'$(RollForward)' == '' and '$(EnableDynamicLoading)' == 'true' and '$(_IsRollForwardSupported)' == 'true'">LatestMinor</RollForward>
+ </PropertyGroup>
+
+ <!-- RollForward is only supported since .NET Core 3.0, but we should allow limited usage when the app is targeting even lower versions
+ This is to let 2.* apps specify that they are OK to run on 3.0 and above. So explicitly allow just Major and LatestMajor
+ other values should still keep failing as they won't have any effect when run on 2.*. -->
+ <NETSdkError Condition="'$(RollForward)' != '' and '$(RollForward)' != 'Major' and '$(RollForward)' != 'LatestMajor' and '$(_IsRollForwardSupported)' != 'true'"
+ ResourceName="RollForwardRequiresVersion30"/>
+
+ <PropertyGroup>
+ <_WriteIncludedFrameworks Condition="'$(SelfContained)' == 'true' and '$(_TargetFrameworkVersionWithoutV)' &gt;= '3.1'">true</_WriteIncludedFrameworks>
+ </PropertyGroup>
+
+ <GenerateRuntimeConfigurationFiles AssetsFilePath="$(ProjectAssetsFile)"
+ TargetFrameworkMoniker="$(TargetFrameworkMoniker)"
+ TargetFramework="$(TargetFramework)"
+ RuntimeConfigPath="$(ProjectRuntimeConfigFilePath)"
+ RuntimeConfigDevPath="$(ProjectRuntimeConfigDevFilePath)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ RollForward="$(RollForward)"
+ UserRuntimeConfig="$(UserRuntimeConfig)"
+ HostConfigurationOptions="@(RuntimeHostConfigurationOption)"
+ AdditionalProbingPaths="@(AdditionalProbingPath)"
+ IsSelfContained="$(SelfContained)"
+ WriteIncludedFrameworks="$(_WriteIncludedFrameworks)">
+
+ </GenerateRuntimeConfigurationFiles>
+
+ <ItemGroup>
+ <!-- Do this in an ItemGroup instead of as an output parameter of the GenerateDepsFile task so that it still gets added to the item set
+ during incremental builds when the task is skipped -->
+ <FileWrites Include="$(ProjectRuntimeConfigFilePath)" Condition="Exists('$(ProjectRuntimeConfigFilePath)')"/>
+ <FileWrites Include="$(ProjectRuntimeConfigDevFilePath)" Condition="Exists('$(ProjectRuntimeConfigDevFilePath)')"/>
+ </ItemGroup>
+
+ </Target>
+
+ <!-- Add runtimeconfig.json file to BuiltProjectOutputGroupOutput, so that it will get included in the NuGet package by the Pack target -->
+ <Target Name="AddRuntimeConfigFileToBuiltProjectOutputGroupOutput"
+ Condition=" '$(GenerateRuntimeConfigurationFiles)' == 'true'"
+ BeforeTargets="BuiltProjectOutputGroup">
+ <ItemGroup>
+ <BuiltProjectOutputGroupOutput Include="$(ProjectRuntimeConfigFilePath)"
+ TargetPath="$(ProjectRuntimeConfigFileName)"
+ FinalOutputPath="$(ProjectRuntimeConfigFilePath)" />
+ </ItemGroup>
+ </Target>
+
+ <Target Name="_SdkBeforeClean">
+ <PropertyGroup Condition="'$(_CleaningWithoutRebuilding)' == ''">
+ <_CleaningWithoutRebuilding>true</_CleaningWithoutRebuilding>
+ <EmitAssetsLogMessages>false</EmitAssetsLogMessages>
+ </PropertyGroup>
+ </Target>
+
+ <Target Name="_SdkBeforeRebuild">
+ <PropertyGroup>
+ <_CleaningWithoutRebuilding>false</_CleaningWithoutRebuilding>
+ </PropertyGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ DefaultRuntimeHostConfigurationOptions
+
+ Defaults @(RuntimeHostConfigurationOption) items based on MSBuild properties.
+ ============================================================
+ -->
+
+ <ItemGroup>
+ <RuntimeHostConfigurationOption Include="System.GC.Concurrent"
+ Condition="'$(ConcurrentGarbageCollection)' != ''"
+ Value="$(ConcurrentGarbageCollection)" />
+
+ <RuntimeHostConfigurationOption Include="System.GC.Server"
+ Condition="'$(ServerGarbageCollection)' != ''"
+ Value="$(ServerGarbageCollection)" />
+
+ <RuntimeHostConfigurationOption Include="System.GC.RetainVM"
+ Condition="'$(RetainVMGarbageCollection)' != ''"
+ Value="$(RetainVMGarbageCollection)" />
+
+ <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation"
+ Condition="'$(TieredCompilation)' != ''"
+ Value="$(TieredCompilation)" />
+
+ <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation.QuickJit"
+ Condition="'$(TieredCompilationQuickJit)' != ''"
+ Value="$(TieredCompilationQuickJit)" />
+
+ <RuntimeHostConfigurationOption Include="System.Runtime.TieredCompilation.QuickJitForLoops"
+ Condition="'$(TieredCompilationQuickJitForLoops)' != ''"
+ Value="$(TieredCompilationQuickJitForLoops)" />
+
+ <RuntimeHostConfigurationOption Include="System.Threading.ThreadPool.MinThreads"
+ Condition="'$(ThreadPoolMinThreads)' != ''"
+ Value="$(ThreadPoolMinThreads)" />
+
+ <RuntimeHostConfigurationOption Include="System.Threading.ThreadPool.MaxThreads"
+ Condition="'$(ThreadPoolMaxThreads)' != ''"
+ Value="$(ThreadPoolMaxThreads)" />
+
+ <RuntimeHostConfigurationOption Include="System.Globalization.Invariant"
+ Condition="'$(InvariantGlobalization)' != ''"
+ Value="$(InvariantGlobalization)" />
+ </ItemGroup>
+
+ <!--
+ ============================================================
+ DefaultAdditionalProbingPaths
+
+ Adds the default @(AdditionalProbingPath) items.
+ ============================================================
+ -->
+
+ <ItemGroup Condition="'$(GenerateRuntimeConfigurationFiles)' == 'true' and '$(SkipDefaultAdditionalProbingPaths)' != 'true'">
+ <!-- Note: can't use Path.Combine here since `|` is an illegal path character -->
+ <AdditionalProbingPath Include="$(UserProfileRuntimeStorePath)$([System.IO.Path]::DirectorySeparatorChar)|arch|$([System.IO.Path]::DirectorySeparatorChar)|tfm|" />
+ </ItemGroup>
+
+ <PropertyGroup>
+ <CompileDependsOn>
+ $(CompileDependsOn);
+ _CreateAppHost;
+ _CreateComHost;
+ _GetIjwHostPaths;
+ </CompileDependsOn>
+ </PropertyGroup>
+
+ <!--
+ ============================================================
+ _CreateAppHost
+ If we found a restored apphost, create the modified destination apphost
+ with options from the project.
+ ============================================================
+ -->
+ <UsingTask TaskName="CreateAppHost" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_CreateAppHost"
+ Inputs="@(IntermediateAssembly);$(AppHostSourcePath)"
+ Outputs="$(AppHostIntermediatePath)"
+ DependsOnTargets="_GetAppHostPaths;CoreCompile"
+ Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and
+ '$(AppHostSourcePath)' != '' and
+ Exists('@(IntermediateAssembly)') and
+ Exists('$(AppHostSourcePath)')">
+ <PropertyGroup>
+ <_UseWindowsGraphicalUserInterface Condition="($(RuntimeIdentifier.StartsWith('win')) or $(DefaultAppHostRuntimeIdentifier.StartsWith('win'))) and '$(OutputType)'=='WinExe'">true</_UseWindowsGraphicalUserInterface>
+ </PropertyGroup>
+
+ <CreateAppHost AppHostSourcePath="$(AppHostSourcePath)"
+ AppHostDestinationPath="$(AppHostIntermediatePath)"
+ AppBinaryName="$(AssemblyName)$(TargetExt)"
+ IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')"
+ WindowsGraphicalUserInterface="$(_UseWindowsGraphicalUserInterface)"
+ Retries="$(CopyRetryCount)"
+ RetryDelayMilliseconds="$(CopyRetryDelayMilliseconds)"
+ />
+ </Target>
+
+ <!--
+ ============================================================
+ _GetAppHostPaths
+
+ Gets the path to apphost (restored via packages or in an apphost pack),
+ and computes the path for the destination apphost.
+ ============================================================
+ -->
+ <Target Name="_GetAppHostPaths"
+ DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences"
+ Condition="'$(UseAppHost)' == 'true' and '$(_IsExecutable)' == 'true'">
+
+ <NETSdkError Condition="'@(_NativeRestoredAppHostNETCore->Count())' > 1"
+ ResourceName="MultipleFilesResolved"
+ FormatArguments="$(_DotNetAppHostExecutableName)" />
+
+ <PropertyGroup>
+ <!-- AppHostSourcePath will be set from ProcessFrameworkReferences if not using the apphost from the assets file -->
+ <AppHostSourcePath Condition="'$(UseAppHostFromAssetsFile)' == 'true'">@(_NativeRestoredAppHostNETCore)</AppHostSourcePath>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(UseAppHostFromAssetsFile)' == 'false' Or '@(_NativeRestoredAppHostNETCore)' != ''">
+ <AppHostIntermediatePath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)$(AssemblyName)$(_NativeExecutableExtension)'))</AppHostIntermediatePath>
+ </PropertyGroup>
+
+ </Target>
+
+ <ItemGroup>
+ <ClsidMap Include="$(IntermediateOutputPath)$(AssemblyName).clsidmap" />
+ <RegFreeComManifest Include="$(IntermediateOutputPath)$(AssemblyName).X.manifest" />
+ </ItemGroup>
+
+ <!--
+ ============================================================
+ _GenerateClsidMap
+
+ Generates a *.clsidmap file from the built assembly.
+ ============================================================
+ -->
+ <UsingTask TaskName="GenerateClsidMap" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <Target Name="_GenerateClsidMap"
+ Inputs="@(IntermediateAssembly)"
+ Outputs="@(ClsidMap)"
+ DependsOnTargets="CoreCompile"
+ Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and
+ '$(EnableComHosting)' == 'true'">
+ <GenerateClsidMap
+ IntermediateAssembly="@(IntermediateAssembly->'%(FullPath)')"
+ CLsidMapDestinationPath="@(ClsidMap->'%(FullPath)')" />
+ </Target>
+
+ <UsingTask TaskName="CreateComHost" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!--
+ ============================================================
+ _CreateComHost
+ If we found a restored comhost, create the modified destination apphost
+ with options from the project.
+ ============================================================
+ -->
+ <Target Name="_CreateComHost"
+ Inputs="@(IntermediateAssembly);$(ComHostSourcePath)"
+ Outputs="$(ComHostIntermediatePath)"
+ DependsOnTargets="_GetComHostPaths;CoreCompile;_GenerateClsidMap;_GenerateRegFreeComManifest"
+ Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and
+ '$(ComHostIntermediatePath)' != '' and
+ Exists('@(IntermediateAssembly)') and
+ Exists('$(ComHostSourcePath)')">
+ <CreateComHost
+ ComHostSourcePath="$(ComHostSourcePath)"
+ ComHostDestinationPath="$(ComHostIntermediatePath)"
+ ClsidMapPath="@(ClsidMap)" />
+ </Target>
+
+ <UsingTask TaskName="GenerateRegFreeComManifest" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <!--
+ ============================================================
+ _GenerateRegFreeComManifest
+
+ Gets the path to the restored comhost, and if the restored comhost
+ was present, computes the path for the destination comhost.
+ ============================================================
+ -->
+ <Target Name="_GenerateRegFreeComManifest"
+ DependsOnTargets="_GenerateClsidMap;_GetComHostPaths"
+ Inputs="@(ClsidMap);@(IntermediateAssembly)"
+ Outputs="@(RegFreeComManifest)"
+ Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true' and
+ '$(EnableComHosting)' == 'true' and
+ '$(EnableRegFreeCom)' == 'true'">
+ <GenerateRegFreeComManifest
+ IntermediateAssembly="@(IntermediateAssembly)"
+ ComHostName="$(ComHostFileName)"
+ ClsidMapPath="@(ClsidMap)"
+ ComManifestPath="@(RegFreeComManifest)" />
+ </Target>
+
+ <!--
+ ============================================================
+ _GetComHostPaths
+
+ Gets the path to the restored comhost, and if the restored comhost
+ was present, computes the path for the destination comhost.
+ ============================================================
+ -->
+ <Target Name="_GetComHostPaths"
+ DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences"
+ Condition="'$(EnableComHosting)' == 'true' and '$(_IsExecutable)' != 'true'">
+ <PropertyGroup>
+ <ComHostFileName>$(AssemblyName).comhost$(_ComHostLibraryExtension)</ComHostFileName>
+ <ComHostIntermediatePath>$([System.IO.Path]::GetFullPath('$(IntermediateOutputPath)$(ComHostFileName)'))</ComHostIntermediatePath>
+ </PropertyGroup>
+
+ <NETSdkError Condition="'$(ComHostSourcePath)' == '' or !Exists('$(ComHostSourcePath)')"
+ ResourceName="CannotFindComhost" />
+ </Target>
+
+ <!--
+ ============================================================
+ _GetIjwHostPaths
+
+ Gets the path to the restored Ijwhost, and if the restored Ijwhost
+ was present, Computes the path for the destination Ijwhost.
+ ============================================================
+ -->
+ <Target Name="_GetIjwHostPaths"
+ DependsOnTargets="ResolvePackageAssets;ResolveFrameworkReferences"
+ Condition="'$(UseIJWHost)' == 'true'">
+
+ <NETSdkError Condition="'$(IjwHostSourcePath)' == '' or !Exists('$(IjwHostSourcePath)')"
+ ResourceName="CannotFindIjwhost" />
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeNETCoreBuildOutputFiles
+
+ Computes any files that need to be copied to the build output folder for .NET Core.
+ ============================================================
+ -->
+ <Target Name="_ComputeNETCoreBuildOutputFiles"
+ DependsOnTargets="_GetAppHostPaths;_GetComHostPaths;_GetIjwHostPaths"
+ BeforeTargets="AssignTargetPaths"
+ Condition="'$(ComputeNETCoreBuildOutputFiles)' == 'true'">
+
+ <!-- Fallback to renaming the dotnet host if there is no apphost for self-contained builds. -->
+ <PropertyGroup Condition="'$(AppHostIntermediatePath)' == '' and '$(SelfContained)' == 'true'">
+ <_CopyAndRenameDotnetHost Condition="'$(_CopyAndRenameDotnetHost)' == ''">true</_CopyAndRenameDotnetHost>
+ </PropertyGroup>
+ <ItemGroup Condition="'$(_CopyAndRenameDotnetHost)' == 'true'">
+ <None Include="@(NativeCopyLocalItems)"
+ Condition="'%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostExecutableName)'">
+ <Link>$(AssemblyName)$(_NativeExecutableExtension)</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </None>
+ </ItemGroup>
+
+
+ <ItemGroup Condition="'$(AppHostIntermediatePath)' != '' or '$(_CopyAndRenameDotnetHost)' == 'true'">
+ <!--
+ If not copying local lock file assemblies, copy the host policy and host fxr libraries for self-contained builds.
+ This is required to allow the host to activate in self-contained mode.
+ -->
+ <None Include="@(NativeCopyLocalItems)"
+ Condition="'$(SelfContained)' == 'true' and
+ '$(CopyLocalLockFileAssemblies)' != 'true' and
+ ('%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostPolicyLibraryName)' or
+ '%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetHostFxrLibraryName)')">
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToPublishDirectory>Never</CopyToPublishDirectory>
+ </None>
+ </ItemGroup>
+ <ItemGroup Condition="'$(AppHostIntermediatePath)' != ''">
+ <None Include="$(AppHostIntermediatePath)">
+ <Link>$(AssemblyName)$(_NativeExecutableExtension)</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <!-- Always copy the AppHost because the contents of the apphost binary can change during the publish step (due to single-file bundling).
+ Always copying the apphost ensures that that the sequence
+ dotnet publish /p:PublishSingleFile=true
+ dotnet publish /p:PublishSingleFile=false
+ places the correct unbundled apphost in the publish directory. -->
+ <CopyToPublishDirectory>Always</CopyToPublishDirectory>
+ </None>
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(ComHostIntermediatePath)' != ''">
+ <None Include="$(ComHostIntermediatePath)">
+ <Link>$(AssemblyName).$(_DotNetComHostLibraryName)</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </None>
+ <None Include="@(RegFreeComManifest)" Condition="'$(EnableRegFreeCom)' == 'true'">
+ <Link>%(FileName)%(Extension)</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </None>
+
+ </ItemGroup>
+
+ <ItemGroup Condition="'$(IjwHostSourcePath)' != '' and '$(UseIJWHost)' == 'true'">
+ <None Include="$(IjwHostSourcePath)">
+ <Link>$(_DotNetIjwHostLibraryName)</Link>
+ <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
+ <CopyToPublishDirectory>PreserveNewest</CopyToPublishDirectory>
+ </None>
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ _ComputeReferenceAssemblies
+
+ Computes references that are only used at compile-time.
+ ============================================================
+ -->
+ <Target Name="_ComputeReferenceAssemblies"
+ DependsOnTargets="ResolveAssemblyReferences">
+
+ <ItemGroup>
+ <_FrameworkReferenceAssemblies Include="@(ReferencePath)"
+ Condition="(%(ReferencePath.FrameworkFile) == 'true' or
+ %(ReferencePath.ResolvedFrom) == 'ImplicitlyExpandDesignTimeFacades')
+ and ('%(ReferencePath.NuGetSourceType)' == '' or
+ '%(ReferencePath.NuGetIsFrameworkReference)' == 'true')" />
+
+ <!--
+ "ReferenceOnly" assemblies are assemblies that are only used at compile-time, and they can't be resolved
+ by the normal compile-assembly resolvers at runtime:
+ 1. App local
+ 2. NuGet/Package layout
+ 3. ProgramFiles\Reference Assemblies
+ These assemblies need to be copied to the 'refs' folder for both build and publish.
+ -->
+ <_ReferenceOnlyAssemblies Include="@(ReferencePath)"
+ Exclude="@(_FrameworkReferenceAssemblies)"
+ Condition="%(ReferencePath.CopyLocal) != 'true' and
+ %(ReferencePath.NuGetSourceType) == ''" />
+
+ <_ReferenceAssemblies Include="@(_FrameworkReferenceAssemblies)" />
+ <_ReferenceAssemblies Include="@(_ReferenceOnlyAssemblies)" />
+ </ItemGroup>
+
+ </Target>
+ <!--
+ ============================================================
+ _ComputeUserRuntimeAssemblies
+
+ Computes references or reference dependencies that are copy local.
+
+ NOTE: NuGet and framework references are never copy local so those are not included here.
+ These will be project references and direct references and their copy local dependencies.
+ ============================================================
+ -->
+ <Target Name="_ComputeUserRuntimeAssemblies">
+ <ItemGroup>
+ <!-- IncludeRuntimeDependency=true metadata is escape hatch to include a non-copy local reference in deps file as a runtime dependency -->
+ <ReferencePath>
+ <IncludeRuntimeDependency Condition="'%(ReferencePath.IncludeRuntimeDependency)' == '' and '%(ReferencePath.CopyLocal)' == 'true'">true</IncludeRuntimeDependency>
+ </ReferencePath>
+
+ <ReferenceDependencyPaths>
+ <IncludeRuntimeDependency Condition="'%(ReferenceDependencyPaths.IncludeRuntimeDependency)' == '' and '%(ReferenceDependencyPaths.CopyLocal)' == 'true'">true</IncludeRuntimeDependency>
+ </ReferenceDependencyPaths>
+
+ <UserRuntimeAssembly Include="@(ReferencePath->WithMetadataValue('IncludeRuntimeDependency', 'true'))" />
+ <UserRuntimeAssembly Include="@(ReferenceDependencyPaths->WithMetadataValue('IncludeRuntimeDependency', 'true'))" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ Run Information
+
+ The ProcessStart information that can be used to run this project.
+ ============================================================
+ -->
+
+ <PropertyGroup>
+ <RunWorkingDirectory Condition="'$(RunWorkingDirectory)' == ''">$(StartWorkingDirectory)</RunWorkingDirectory>
+ </PropertyGroup>
+
+ <Choose>
+ <When Condition="'$(StartAction)' == 'Program'">
+ <PropertyGroup>
+ <RunCommand Condition="'$(RunCommand)' == ''">$(StartProgram)</RunCommand>
+ <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
+ </PropertyGroup>
+ </When>
+
+ <When Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_IsExecutable)' == 'true'">
+ <PropertyGroup Condition="'$(UseAppHost)' != 'true'">
+ <!-- TODO: https://github.com/dotnet/sdk/issues/20 Need to get the DotNetHost path from MSBuild -->
+ <RunCommand Condition="'$(RunCommand)' == ''">dotnet</RunCommand>
+
+ <_NetCoreRunArguments>exec &quot;$(TargetPath)&quot;</_NetCoreRunArguments>
+ <RunArguments Condition="'$(RunArguments)' == '' and '$(StartArguments)' != ''">$(_NetCoreRunArguments) $(StartArguments)</RunArguments>
+ <RunArguments Condition="'$(RunArguments)' == ''">$(_NetCoreRunArguments)</RunArguments>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(UseAppHost)' == 'true'">
+ <RunCommand Condition="'$(RunCommand)' == ''">$(TargetDir)$(AssemblyName)$(_NativeExecutableExtension)</RunCommand>
+ <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
+ </PropertyGroup>
+ </When>
+
+ <When Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework' and '$(_IsExecutable)' == 'true'">
+ <PropertyGroup>
+ <RunCommand Condition="'$(RunCommand)' == ''">$(TargetPath)</RunCommand>
+ <RunArguments Condition="'$(RunArguments)' == ''">$(StartArguments)</RunArguments>
+ </PropertyGroup>
+ </When>
+ </Choose>
+
+ <PropertyGroup>
+ <!-- Ensure $(RunWorkingDirectory) is a full path -->
+ <RunWorkingDirectory Condition="'$(RunWorkingDirectory)' != '' and '$([System.IO.Path]::IsPathRooted($(RunWorkingDirectory)))' != 'true'">$([System.IO.Path]::GetFullPath($([System.IO.Path]::Combine('$(MSBuildProjectDirectory)', '$(RunWorkingDirectory)'))))</RunWorkingDirectory>
+ </PropertyGroup>
+
+ <!--
+ ============================================================
+ CoreGenerateSatelliteAssemblies
+ ============================================================
+ -->
+ <PropertyGroup>
+ <CreateSatelliteAssembliesDependsOn>
+ $(CreateSatelliteAssembliesDependsOn);
+ CoreGenerateSatelliteAssemblies
+ </CreateSatelliteAssembliesDependsOn>
+ </PropertyGroup>
+
+ <UsingTask TaskName="GetAssemblyAttributes" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="CoreGenerateSatelliteAssemblies"
+ DependsOnTargets="ResolveAssemblyReferences;_GetAssemblyInfoFromTemplateFile"
+ Inputs="$(MSBuildAllProjects);@(_SatelliteAssemblyResourceInputs);$(IntermediateOutputPath)$(TargetName)$(TargetExt)"
+ Outputs="$(IntermediateOutputPath)%(Culture)\$(TargetName).resources.dll"
+ Condition="'@(_SatelliteAssemblyResourceInputs)' != '' and '$(GenerateSatelliteAssembliesForCore)' == 'true' ">
+
+ <MakeDir Directories="@(_SatelliteAssemblyResourceInputs->'$(IntermediateOutputPath)%(Culture)')" />
+
+ <PropertyGroup>
+ <_AssemblyInfoFile>$(IntermediateOutputPath)%(_SatelliteAssemblyResourceInputs.Culture)\$(TargetName).resources.cs</_AssemblyInfoFile>
+ <_OutputAssembly>$(IntermediateOutputPath)%(_SatelliteAssemblyResourceInputs.Culture)\$(TargetName).resources.dll</_OutputAssembly>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <SatelliteAssemblyAttribute Include="System.Reflection.AssemblyCultureAttribute" Condition="'%(_SatelliteAssemblyResourceInputs.Culture)' != ''">
+ <_Parameter1>%(_SatelliteAssemblyResourceInputs.Culture)</_Parameter1>
+ </SatelliteAssemblyAttribute>
+ </ItemGroup>
+
+ <WriteCodeFragment AssemblyAttributes="@(SatelliteAssemblyAttribute)" Language="C#" OutputFile="$(_AssemblyInfoFile)">
+ <Output TaskParameter="OutputFile" ItemName="FileWrites" />
+ </WriteCodeFragment>
+
+ <PropertyGroup Condition="'$(UseSharedCompilation)' == ''">
+ <UseSharedCompilation>true</UseSharedCompilation>
+ </PropertyGroup>
+
+ <Csc Resources="@(_SatelliteAssemblyResourceInputs)"
+ Sources="$(_AssemblyInfoFile)"
+ OutputAssembly="$(_OutputAssembly)"
+ References="@(ReferencePath)"
+ KeyContainer="$(KeyContainerName)"
+ KeyFile="$(KeyOriginatorFile)"
+ NoConfig="true"
+ NoLogo="$(NoLogo)"
+ NoStandardLib="$(NoCompilerStandardLib)"
+ PublicSign="$(PublicSign)"
+ DelaySign="$(DelaySign)"
+ Deterministic="$(Deterministic)"
+ DisabledWarnings="$(DisabledWarnings)"
+ WarningLevel="$(WarningLevel)"
+ WarningsAsErrors="$(WarningsAsErrors)"
+ WarningsNotAsErrors="$(WarningsNotAsErrors)"
+ TargetType="Library"
+ ToolExe="$(CscToolExe)"
+ ToolPath="$(CscToolPath)"
+ UseSharedCompilation="$(UseSharedCompilation)">
+
+ <Output TaskParameter="OutputAssembly" ItemName="FileWrites"/>
+ </Csc>
+ </Target>
+
+ <Target Name="_GetAssemblyInfoFromTemplateFile">
+ <GetAssemblyAttributes PathToTemplateFile="$(IntermediateOutputPath)$(TargetName)$(TargetExt)" >
+ <Output TaskParameter="AssemblyAttributes" ItemName="_AssemblyAttributesFromTemplateFile" />
+ </GetAssemblyAttributes>
+
+ <ItemGroup>
+ <SatelliteAssemblyAttribute Include="@(_AssemblyAttributesFromTemplateFile)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ _DefaultMicrosoftNETPlatformLibrary
+
+ .NET Core apps can have shared frameworks that are pre-installed on the target machine, thus the app is "portable"
+ to any machine that already has the shared framework installed. For .NET Core 1.x and 2.x, a "platform" library
+ is declared. The platform library and its dependencies will be excluded from the publish output.
+
+ For .NET Core 3 and up, targeting packs and runtime packs are used for shared framework assets instead of PackageReference
+ ============================================================
+ -->
+ <Target Name="_DefaultMicrosoftNETPlatformLibrary">
+
+ <PropertyGroup Condition="'$(MicrosoftNETPlatformLibrary)' == ''">
+ <MicrosoftNETPlatformLibrary Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'">Microsoft.NETCore.App</MicrosoftNETPlatformLibrary>
+ </PropertyGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ GetAllRuntimeIdentifiers
+ ============================================================
+ -->
+ <Target Name="GetAllRuntimeIdentifiers"
+ Returns="$(RuntimeIdentifiers);$(RuntimeIdentifier)" />
+
+ <!--
+ ============================================================
+ InjectTargetPathMetadata
+
+ Update TargetPathWithTargetPlatformMoniker with target framework
+ identifier and version metadata. This is so that the
+ ImplicitlyExpandNETStandardFacades target can determine if a
+ referenced project needs the .NET Standard facades even if
+ the project hasn't been compiled to disk yet.
+
+ See https://github.com/dotnet/sdk/issues/1403 for more context
+ ============================================================
+ -->
+
+ <ItemDefinitionGroup>
+ <TargetPathWithTargetPlatformMoniker>
+ <TargetFrameworkIdentifier>$(TargetFrameworkIdentifier)</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>$(_TargetFrameworkVersionWithoutV)</TargetFrameworkVersion>
+ </TargetPathWithTargetPlatformMoniker>
+ </ItemDefinitionGroup>
+
+ <!--
+ ============================================================
+ Project Capabilities
+ ============================================================
+ -->
+
+ <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_IsExecutable)' == 'true'">
+ <ProjectCapability Include="CrossPlatformExecutable" />
+ </ItemGroup>
+
+ <!-- Reference Manager capabilities -->
+ <ItemGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
+ <ProjectCapability Remove="ReferenceManagerAssemblies" />
+ </ItemGroup>
+
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DisableStandardFrameworkResolution.targets" Condition="'$(DisableStandardFrameworkResolution)' == 'true'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.DesignerSupport.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.GenerateAssemblyInfo.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'"/>
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.GenerateSupportedRuntime.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ComposeStore.targets" Condition="'$(UsingNETSdkDefaults)' == 'true'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.CrossGen.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ObsoleteReferences.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Publish.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackStubs.targets" Condition="'$(Language)' == 'C++'"/>
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackTool.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PackProjectTool.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.PreserveCompilationContext.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ConflictResolution.targets" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.CSharp.targets" Condition="'$(Language)' == 'C#'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.VisualBasic.targets" Condition="'$(Language)' == 'VB'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.Sdk.FSharp.targets" Condition="'$(Language)' == 'F#'" />
+ <Import Project="$(MSBuildThisFileDirectory)Microsoft.NET.ILLink.targets" />
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.SupportedTargetFrameworks.props b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.SupportedTargetFrameworks.props
new file mode 100644
index 0000000000..bcbc50a035
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.SupportedTargetFrameworks.props
@@ -0,0 +1,62 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.SupportedTargetFrameworks.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+
+<!-- This file contains a list of the TFMs that are supported by this SDK for .NET Core, .NET Standard, and .NET Framework.
+ This is used by VS to show the list of frameworks to which projects can be retargeted. -->
+<Project>
+ <!-- .NET Core App -->
+ <ItemGroup>
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.0" DisplayName=".NET Core 1.0" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v1.1" DisplayName=".NET Core 1.1" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.0" DisplayName=".NET Core 2.0" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.1" DisplayName=".NET Core 2.1" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v2.2" DisplayName=".NET Core 2.2" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.0" DisplayName=".NET Core 3.0" />
+ <SupportedNETCoreAppTargetFramework Include=".NETCoreApp,Version=v3.1" DisplayName=".NET Core 3.1" />
+ </ItemGroup>
+
+ <!-- .NET Standard -->
+ <ItemGroup>
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.0" DisplayName=".NET Standard 1.0" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.1" DisplayName=".NET Standard 1.1" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.2" DisplayName=".NET Standard 1.2" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.3" DisplayName=".NET Standard 1.3" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.4" DisplayName=".NET Standard 1.4" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.5" DisplayName=".NET Standard 1.5" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v1.6" DisplayName=".NET Standard 1.6" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.0" DisplayName=".NET Standard 2.0" />
+ <SupportedNETStandardTargetFramework Include=".NETStandard,Version=v2.1" DisplayName=".NET Standard 2.1" />
+ </ItemGroup>
+
+ <!-- .NET Framework -->
+ <ItemGroup>
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v2.0" DisplayName=".NET Framework 2.0" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.0" DisplayName=".NET Framework 3.0" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v3.5" DisplayName=".NET Framework 3.5" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.0" DisplayName=".NET Framework 4.0" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5" DisplayName=".NET Framework 4.5" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.1" DisplayName=".NET Framework 4.5.1" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.5.2" DisplayName=".NET Framework 4.5.2" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6" DisplayName=".NET Framework 4.6" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.1" DisplayName=".NET Framework 4.6.1" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.6.2" DisplayName=".NET Framework 4.6.2" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7" DisplayName=".NET Framework 4.7" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.1" DisplayName=".NET Framework 4.7.1" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.7.2" DisplayName=".NET Framework 4.7.2" />
+ <SupportedNETFrameworkTargetFramework Include=".NETFramework,Version=v4.8" DisplayName=".NET Framework 4.8" />
+ </ItemGroup>
+
+ <!-- All supported target frameworks -->
+ <ItemGroup>
+ <SupportedTargetFramework Include="@(SupportedNETCoreAppTargetFramework);@(SupportedNETStandardTargetFramework);@(SupportedNETFrameworkTargetFramework)" />
+ </ItemGroup>
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets
new file mode 100644
index 0000000000..b34e739603
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.NET.TargetFrameworkInference.targets
@@ -0,0 +1,189 @@
+<!--
+***********************************************************************************************
+Microsoft.NET.TargetFrameworkInference.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ Note that this file is only included when $(TargetFramework) is set and so we do not need to check that here.
+
+ Common targets require that $(TargetFrameworkIdentifier) and $(TargetFrameworkVersion) are set by static evaluation
+ before they are imported. In common cases (currently netstandard, netcoreapp, or net), we infer them from the short
+ names given via TargetFramework to allow for terseness and lack of duplication in project files.
+
+ For other cases, the user must supply them manually.
+
+ For cases where inference is supported, the user need only specify the targets in TargetFrameworks, e.g:
+ <PropertyGroup>
+ <TargetFrameworks>net45;netstandard1.0</TargetFrameworks>
+ </PropertyGroup>
+
+ For cases where inference is not supported, identifier, version and profile can be specified explicitly as follows:
+ <PropertyGroup>
+ <TargetFrameworks>portable-net451+win81;xyz1.0</TargetFrameworks>
+ <PropertyGroup>
+ <PropertyGroup Condition="'$(TargetFramework)' == 'portable-net451+win81'">
+ <TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
+ <TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
+ <TargetFrameworkProfile>Profile44</TargetFrameworkProfile>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(TargetFramework)' == 'xyz1.0'">
+ <TargetFrameworkIdentifier>Xyz</TargetFrameworkVersion>
+ <PropertyGroup>
+
+ Note in the xyz1.0 case, which is meant to demonstrate a framework we don't yet recognize, we can still
+ infer the version of 1.0. The user can also override it as always we honor a TargetFrameworkIdentifier
+ or TargetFrameworkVersion that is already set.
+ -->
+
+ <!-- Split $(TargetFramework) (e.g. net45) into short identifier and short version (e.g. 'net' and '45'). -->
+ <PropertyGroup Condition="'$(TargetFramework)' != '' and !$(TargetFramework.Contains(',')) and !$(TargetFramework.Contains('+'))">
+ <_ShortFrameworkIdentifier>$(TargetFramework.TrimEnd('.0123456789'))</_ShortFrameworkIdentifier>
+ <_ShortFrameworkVersion>$(TargetFramework.Substring($(_ShortFrameworkIdentifier.Length)))</_ShortFrameworkVersion>
+ </PropertyGroup>
+
+ <!-- Map short name to long name. See earlier comment for example of how to work with identifiers that are not recognized here. -->
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''">
+ <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)' == 'netstandard'">.NETStandard</TargetFrameworkIdentifier>
+ <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)' == 'netcoreapp'">.NETCoreApp</TargetFrameworkIdentifier>
+ <TargetFrameworkIdentifier Condition="'$(_ShortFrameworkIdentifier)' == 'net'">.NETFramework</TargetFrameworkIdentifier>
+ </PropertyGroup>
+
+ <!-- Versions with dots are taken as is and just given leading 'v'. -->
+ <PropertyGroup Condition="'$(TargetFrameworkVersion)' == '' and '$(_ShortFrameworkVersion)' != '' and $(_ShortFrameworkVersion.Contains('.'))">
+ <TargetFrameworkVersion>v$(_ShortFrameworkVersion)</TargetFrameworkVersion>
+ </PropertyGroup>
+
+ <!-- Versions with no dots and up to 3 characters get leading 'v' and implicit dots between characters. -->
+ <PropertyGroup Condition="'$(TargetFrameworkVersion)' == '' and '$(_ShortFrameworkVersion)' != ''">
+ <TargetFrameworkVersion Condition="$(_ShortFrameworkVersion.Length) == 1">v$(_ShortFrameworkVersion[0]).0</TargetFrameworkVersion>
+ <TargetFrameworkVersion Condition="$(_ShortFrameworkVersion.Length) == 2">v$(_ShortFrameworkVersion[0]).$(_ShortFrameworkVersion[1])</TargetFrameworkVersion>
+ <TargetFrameworkVersion Condition="$(_ShortFrameworkVersion.Length) == 3">v$(_ShortFrameworkVersion[0]).$(_ShortFrameworkVersion[1]).$(_ShortFrameworkVersion[2])</TargetFrameworkVersion>
+ </PropertyGroup>
+
+ <!--
+ Trigger an error if we're unable to infer the framework identifier and version.
+
+ We have to evaluate this here and not in the target because by the time the target runs,
+ Microsoft.Common.targets will have defaulted to .NETFramework,Version=v4.0
+ -->
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '' or '$(TargetFrameworkVersion)' == ''">
+ <_UnsupportedTargetFrameworkError>true</_UnsupportedTargetFrameworkError>
+ </PropertyGroup>
+
+ <!--
+ NOTE: We must not validate the TFM before restore target runs as it prevents adding additional TFM
+ support from being provided by a nuget package such as MSBuild.Sdk.Extras.
+
+ We run before RunResolvePackageDependencies and GetReferenceAssemblyPaths so that design-time builds
+ which do not currently invoke _CheckForInvalidConfigurationAndPlatform, will not trigger spurious
+ errors that are only consequences of the root cause identified here.
+ -->
+ <Target Name="_CheckForUnsupportedTargetFramework"
+ BeforeTargets="_CheckForInvalidConfigurationAndPlatform;RunResolvePackageDependencies;GetFrameworkPaths;GetReferenceAssemblyPaths"
+ Condition="'$(_UnsupportedTargetFrameworkError)' == 'true'"
+ >
+ <NETSdkError Condition="!$(TargetFramework.Contains(';'))"
+ ResourceName="CannotInferTargetFrameworkIdentifierAndVersion"
+ FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
+
+ <NETSdkError Condition="$(TargetFramework.Contains(';'))"
+ ResourceName="TargetFrameworkWithSemicolon"
+ FormatArguments="$([MSBuild]::Escape('$(TargetFramework)'))" />
+ </Target>
+
+ <Target Name="_CollectTargetFrameworkForTelemetry" AfterTargets="_CheckForUnsupportedTargetFramework">
+ <Telemetry EventName="targetframeworkeval" EventData="TargetFrameworkVersion=$([MSBuild]::Escape('$(TargetFrameworkMoniker)'))" />
+ </Target>
+
+ <!--
+ Don't leave TargetFrameworkVersion empty if it still hasn't been determined. We will trigger the error above,
+ but we need this to be a valid version so that our error message does not get pre-empted by failure to interpret
+ version comparison expressions, which is currently unrecoverable in VS.
+
+ Also don't leave TargetFrameworkIdentifier unset as it will be defaulted to .NETFramework by common targets, which
+ can cause restore (which we cannot block, see above) to silently succeed for empty TargetFramework.
+ -->
+ <PropertyGroup Condition="'$(TargetFrameworkVersion)' == ''">
+ <TargetFrameworkVersion >v0.0</TargetFrameworkVersion>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == ''">
+ <TargetFrameworkIdentifier>_</TargetFrameworkIdentifier>
+ </PropertyGroup>
+
+ <!--
+ Trigger an error if targeting a higher version of .NET Core or .NET Standard than is supported by the current SDK.
+ -->
+ <Target Name="_CheckForUnsupportedNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' And '$(NETCoreAppMaximumVersion)' != ''">
+
+ <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' > '$(NETCoreAppMaximumVersion)'"
+ ResourceName="UnsupportedTargetFrameworkVersion"
+ FormatArguments=".NET Core;$(_TargetFrameworkVersionWithoutV);$(NETCoreAppMaximumVersion)"
+ />
+ </Target>
+
+ <!--
+ Trigger an error if C++ project targeting a lower version of .NET Core than 3.1.
+ -->
+ <Target Name="_CheckForUnsupportedCppNETCoreVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences">
+ <NETSdkError Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp' and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.1' and '$(Language)' == 'C++'"
+ ResourceName="CppRequiresTFMVersion31"
+ />
+ </Target>
+
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' == ''">
+ <NETStandardMaximumVersion>2.1</NETStandardMaximumVersion>
+ </PropertyGroup>
+
+ <Target Name="_CheckForUnsupportedNETStandardVersion" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETStandard' And '$(NETStandardMaximumVersion)' != ''">
+
+ <NETSdkError Condition="'$(_TargetFrameworkVersionWithoutV)' > '$(NETStandardMaximumVersion)'"
+ ResourceName="UnsupportedTargetFrameworkVersion"
+ FormatArguments=".NET Standard;$(_TargetFrameworkVersionWithoutV);$(NETStandardMaximumVersion)"
+ />
+ </Target>
+
+ <Target Name="_CheckForUnsupportedTargetFrameworkAndFeatureCombination" BeforeTargets="_CheckForInvalidConfigurationAndPlatform;Restore;CollectPackageReferences"
+ Condition="'$(TargetFrameworkIdentifier)' == '.NETFramework'">
+
+ <NETSdkError Condition="'$(UsingNETSdkDefaults)' != 'true'"
+ ResourceName="NETFrameworkWithoutUsingNETSdkDefaults" />
+ </Target>
+
+ <!-- Exclude files from OutputPath and IntermediateOutputPath from default item globs. Use the value
+ of these properties before the TargetFramework is appended, so that if these values are specified
+ in the project file, the specified value will be used for the exclude.
+
+ We may be able to move this to Microsoft.NET.Sdk.DefaultItems.targets (where the other DefaultItemExcludes
+ are defined) if we fix https://github.com/dotnet/sdk/issues/550
+ -->
+ <PropertyGroup>
+ <DefaultItemExcludes>$(DefaultItemExcludes);$(OutputPath)/**</DefaultItemExcludes>
+ <DefaultItemExcludes>$(DefaultItemExcludes);$(IntermediateOutputPath)/**</DefaultItemExcludes>
+ </PropertyGroup>
+
+ <!-- Projects which don't use Microsoft.NET.Sdk will typically define the OutputPath directly (usually in a
+ Configuration-specific PropertyGroup), so in that case we won't append to it by default. -->
+ <PropertyGroup Condition="'$(UsingNETSdkDefaults)' == 'true'">
+ <AppendTargetFrameworkToOutputPath Condition="'$(AppendTargetFrameworkToOutputPath)' == ''">true</AppendTargetFrameworkToOutputPath>
+ </PropertyGroup>
+
+ <!--
+ Append $(TargetFramework) directory to output and intermediate paths to prevent bin clashes between
+ targets.
+ -->
+ <PropertyGroup Condition="'$(AppendTargetFrameworkToOutputPath)' == 'true' and '$(TargetFramework)' != '' and '$(_UnsupportedTargetFrameworkError)' != 'true'">
+ <IntermediateOutputPath>$(IntermediateOutputPath)$(TargetFramework.ToLowerInvariant())\</IntermediateOutputPath>
+ <OutputPath>$(OutputPath)$(TargetFramework.ToLowerInvariant())\</OutputPath>
+ </PropertyGroup>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets
new file mode 100644
index 0000000000..083d70564a
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets
@@ -0,0 +1,548 @@
+<!--
+***********************************************************************************************
+Microsoft.PackageDependencyResolution.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ *************************************
+ 1. INPUT PROPERTIES
+ - That configure the PackageDependency targets
+ *************************************
+ -->
+
+ <!-- General Properties -->
+ <PropertyGroup>
+ <ProjectAssetsFile Condition="'$(ProjectAssetsFile)' == ''">$(MSBuildProjectExtensionsPath)/project.assets.json</ProjectAssetsFile>
+ <ProjectAssetsFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(ProjectAssetsFile)))</ProjectAssetsFile>
+
+ <!-- Note that the assets.cache file has contents that are unique to the current TFM and configuration and therefore cannot
+ be stored in a shared directory next to the assets.json file -->
+ <ProjectAssetsCacheFile Condition="'$(ProjectAssetsCacheFile)' == ''">$(IntermediateOutputPath)$(MSBuildProjectName).assets.cache</ProjectAssetsCacheFile>
+ <ProjectAssetsCacheFile>$([MSBuild]::NormalizePath($(MSBuildProjectDirectory), $(ProjectAssetsCacheFile)))</ProjectAssetsCacheFile>
+
+ <!-- Don't copy local for netstandard projects. -->
+ <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == '' and
+ '$(TargetFrameworkIdentifier)' == '.NETStandard'">false</CopyLocalLockFileAssemblies>
+
+ <!-- Don't copy local for netcoreapp projects before 3.0 or non-exe and non-component projects. -->
+ <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == '' and
+ '$(TargetFrameworkIdentifier)' == '.NETCoreApp' and
+ ('$(_TargetFrameworkVersionWithoutV)' &lt; '3.0' or
+ ('$(HasRuntimeOutput)' != 'true' and '$(EnableDynamicLoading)' != 'true'))">false</CopyLocalLockFileAssemblies>
+
+ <!-- All other project types should copy local. -->
+ <CopyLocalLockFileAssemblies Condition="'$(CopyLocalLockFileAssemblies)' == ''">true</CopyLocalLockFileAssemblies>
+
+ <ContentPreprocessorOutputDirectory Condition="'$(ContentPreprocessorOutputDirectory)' == ''">$(IntermediateOutputPath)NuGet\</ContentPreprocessorOutputDirectory>
+
+ <UseTargetPlatformAsNuGetTargetMoniker Condition="'$(UseTargetPlatformAsNuGetTargetMoniker)' == '' AND '$(TargetFrameworkMoniker)' == '.NETCore,Version=v5.0'">true</UseTargetPlatformAsNuGetTargetMoniker>
+ <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' == 'true'">$(TargetPlatformIdentifier),Version=v$([System.Version]::Parse('$(TargetPlatformMinVersion)').ToString(3))</NuGetTargetMoniker>
+ <NuGetTargetMoniker Condition="'$(NuGetTargetMoniker)' == '' AND '$(UseTargetPlatformAsNuGetTargetMoniker)' != 'true'">$(TargetFrameworkMoniker)</NuGetTargetMoniker>
+
+ <EmitAssetsLogMessages Condition="'$(EmitAssetsLogMessages)' == ''">true</EmitAssetsLogMessages>
+ </PropertyGroup>
+
+ <!-- Target Moniker + RID-->
+ <PropertyGroup Condition="'$(_NugetTargetMonikerAndRID)' == ''">
+ <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' == ''">$(NuGetTargetMoniker)</_NugetTargetMonikerAndRID>
+ <_NugetTargetMonikerAndRID Condition="'$(RuntimeIdentifier)' != ''">$(NuGetTargetMoniker)/$(RuntimeIdentifier)</_NugetTargetMonikerAndRID>
+ </PropertyGroup>
+
+ <!--
+ *************************************
+ 2. EXTERNAL PROPERTIES and ITEMS
+ - Override or add to external targets
+ *************************************
+ -->
+
+ <PropertyGroup>
+ <ResolveAssemblyReferencesDependsOn>
+ $(ResolveAssemblyReferencesDependsOn);
+ ResolvePackageDependenciesForBuild;
+ _HandlePackageFileConflicts;
+ </ResolveAssemblyReferencesDependsOn>
+
+ <PrepareResourcesDependsOn>
+ ResolvePackageDependenciesForBuild;
+ _HandlePackageFileConflicts;
+ $(PrepareResourcesDependsOn)
+ </PrepareResourcesDependsOn>
+ </PropertyGroup>
+
+ <!-- Common tokens used in preprocessed content files -->
+ <ItemGroup>
+ <PreprocessorValue Include="rootnamespace">
+ <Value>$(RootNamespace)</Value>
+ </PreprocessorValue>
+ <PreprocessorValue Include="assemblyname">
+ <Value>$(AssemblyName)</Value>
+ </PreprocessorValue>
+ <PreprocessorValue Include="fullpath">
+ <Value>$(MSBuildProjectDirectory)</Value>
+ </PreprocessorValue>
+ <PreprocessorValue Include="outputfilename">
+ <Value>$(TargetFileName)</Value>
+ </PreprocessorValue>
+ <PreprocessorValue Include="filename">
+ <Value>$(MSBuildProjectFile)</Value>
+ </PreprocessorValue>
+ <PreprocessorValue Include="@(NuGetPreprocessorValue)" Exclude="@(PreprocessorValue)" />
+ </ItemGroup>
+
+ <!--
+ This will prevent RAR from spending time locating dependencies and related files for assemblies
+ that came from packages. PackageReference should already be promoted to a closure of Reference
+ items and we are responsible for adding package relates files to CopyLocal items, not RAR. This
+ is only configurable as a compat opt-out in case skipping the slow RAR code breaks something.
+ -->
+ <PropertyGroup Condition="'$(MarkPackageReferencesAsExternallyResolved)' == ''">
+ <MarkPackageReferencesAsExternallyResolved>true</MarkPackageReferencesAsExternallyResolved>
+ </PropertyGroup>
+
+ <!--
+ *************************************
+ 3. BUILD TARGETS
+ - Override the Depends-On properties, or the individual targets
+ *************************************
+ -->
+
+ <!--
+ ============================================================
+ ResolvePackageDependenciesForBuild
+
+ Populate items for build. This is triggered before target
+ "AssignProjectConfiguration" to ensure ProjectReference items
+ are populated before ResolveProjectReferences is run.
+ ============================================================
+ -->
+ <PropertyGroup>
+ <ResolvePackageDependenciesForBuildDependsOn>
+ ResolveLockFileReferences;
+ ResolveLockFileAnalyzers;
+ ResolveLockFileCopyLocalFiles;
+ ResolveRuntimePackAssets;
+ RunProduceContentAssets;
+ IncludeTransitiveProjectReferences
+ </ResolvePackageDependenciesForBuildDependsOn>
+ </PropertyGroup>
+ <Target Name="ResolvePackageDependenciesForBuild"
+ Condition=" ('$(DesignTimeBuild)' != 'true' and '$(_CleaningWithoutRebuilding)' != 'true')
+ Or Exists('$(ProjectAssetsFile)')"
+ BeforeTargets="AssignProjectConfiguration"
+ DependsOnTargets="$(ResolvePackageDependenciesForBuildDependsOn)" />
+
+ <!--
+ *************************************
+ 4. Package Dependency TASK and TARGETS
+ - Raise the lock file to MSBuild Items and create derived items
+ *************************************
+ -->
+
+ <!--
+ ============================================================
+ RunResolvePackageDependencies
+
+ Generate Definitions and Dependencies based on ResolvePackageDependencies task
+ ============================================================
+ -->
+
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolvePackageDependencies"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.CheckForTargetInAssetsFile"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.JoinItems"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.ResolvePackageAssets"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!-- The condition on this target causes it to be skipped during design-time builds if
+ the restore operation hasn't run yet. This is to avoid displaying an error in
+ the Visual Studio error list when a project is created before NuGet restore has
+ run and created the assets file. -->
+ <Target Name="RunResolvePackageDependencies"
+ Condition=" '$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)')"
+ DependsOnTargets="ReportAssetsLogMessages">
+
+ <!-- Verify that the assets file has a target for the right framework. Otherwise, if we restored for the
+ wrong framework, we'd end up finding no references to pass to the compiler, and we'd get a ton of
+ compile errors. -->
+ <CheckForTargetInAssetsFile
+ AssetsFilePath="$(ProjectAssetsFile)"
+ TargetFrameworkMoniker="$(NuGetTargetMoniker)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ Condition=" '$(DesignTimeBuild)' != 'true'"/>
+
+ <ResolvePackageDependencies
+ ProjectPath="$(MSBuildProjectFullPath)"
+ ProjectAssetsFile="$(ProjectAssetsFile)"
+ ProjectLanguage="$(Language)"
+ ContinueOnError="ErrorAndContinue">
+
+ <Output TaskParameter="TargetDefinitions" ItemName="TargetDefinitions" />
+ <Output TaskParameter="PackageDefinitions" ItemName="PackageDefinitions" />
+ <Output TaskParameter="FileDefinitions" ItemName="FileDefinitions" />
+ <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" />
+ <Output TaskParameter="FileDependencies" ItemName="FileDependencies" />
+ </ResolvePackageDependencies>
+
+ </Target>
+
+ <Target Name="ResolvePackageAssets"
+ Condition=" '$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)')"
+ DependsOnTargets="ProcessFrameworkReferences;_DefaultMicrosoftNETPlatformLibrary;_ComputePackageReferencePublish">
+
+ <PropertyGroup Condition="'$(TargetFrameworkIdentifier)' == '.NETCoreApp'
+ and '$(_TargetFrameworkVersionWithoutV)' >= '3.0'
+ and '$(UseAppHostFromAssetsFile)' == ''">
+ <!-- For .NET Core 3.0 and higher, we'll get the apphost from an apphost pack (via ProcessFrameworkReferences) -->
+ <UseAppHostFromAssetsFile>false</UseAppHostFromAssetsFile>
+ </PropertyGroup>
+ <PropertyGroup Condition="'$(UseAppHostFromAssetsFile)' == ''">
+ <UseAppHostFromAssetsFile>true</UseAppHostFromAssetsFile>
+ </PropertyGroup>
+
+ <PropertyGroup Condition="'$(EnsureRuntimePackageDependencies)' == ''
+ and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'
+ and '$(_TargetFrameworkVersionWithoutV)' &lt; '3.0'
+ and '$(EnsureNETCoreAppRuntime)' != 'false'">
+ <EnsureRuntimePackageDependencies>true</EnsureRuntimePackageDependencies>
+ </PropertyGroup>
+
+ <!-- Only copy local runtime target assets if targeting netcoreapp -->
+ <PropertyGroup Condition="'$(CopyLocalRuntimeTargetAssets)' == '' and '$(TargetFrameworkIdentifier)' == '.NETCoreApp'">
+ <CopyLocalRuntimeTargetAssets>true</CopyLocalRuntimeTargetAssets>
+ </PropertyGroup>
+
+ <ItemGroup>
+ <_PackAsToolShimRuntimeIdentifiers Condition="@(_PackAsToolShimRuntimeIdentifiers) ==''" Include="$(PackAsToolShimRuntimeIdentifiers)"/>
+
+ <!-- Pass these packages into the ResolvePackageAssets task to verify that the restored versions of the packages
+ match the expected version -->
+ <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.NETCore.App'" />
+ <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.AspNetCore.App'" />
+ <ExpectedPlatformPackages Include="@(PackageReference)" Condition="'%(Identity)' == 'Microsoft.AspNetCore.All'" />
+ </ItemGroup>
+
+ <ResolvePackageAssets
+ ProjectAssetsFile="$(ProjectAssetsFile)"
+ ProjectAssetsCacheFile="$(ProjectAssetsCacheFile)"
+ ProjectPath="$(MSBuildProjectFullPath)"
+ ProjectLanguage="$(Language)"
+ EmitAssetsLogMessages="$(EmitAssetsLogMessages)"
+ TargetFrameworkMoniker="$(NuGetTargetMoniker)"
+ RuntimeIdentifier="$(RuntimeIdentifier)"
+ PlatformLibraryName="$(MicrosoftNETPlatformLibrary)"
+ RuntimeFrameworks="@(RuntimeFramework)"
+ IsSelfContained="$(SelfContained)"
+ MarkPackageReferencesAsExternallyResolved="$(MarkPackageReferencesAsExternallyResolved)"
+ DisablePackageAssetsCache="$(DisablePackageAssetsCache)"
+ DisableFrameworkAssemblies="$(DisableLockFileFrameworks)"
+ CopyLocalRuntimeTargetAssets="$(CopyLocalRuntimeTargetAssets)"
+ DisableTransitiveProjectReferences="$(DisableTransitiveProjectReferences)"
+ DisableTransitiveFrameworkReferences="$(DisableTransitiveFrameworkReferences)"
+ DotNetAppHostExecutableNameWithoutExtension="$(_DotNetAppHostExecutableNameWithoutExtension)"
+ ShimRuntimeIdentifiers="@(_PackAsToolShimRuntimeIdentifiers)"
+ EnsureRuntimePackageDependencies="$(EnsureRuntimePackageDependencies)"
+ VerifyMatchingImplicitPackageVersion="$(VerifyMatchingImplicitPackageVersion)"
+ ExpectedPlatformPackages="@(ExpectedPlatformPackages)"
+ SatelliteResourceLanguages="$(SatelliteResourceLanguages)"
+ DesignTimeBuild="$(DesignTimeBuild)"
+ ContinueOnError="$(ContinueOnError)"
+ PackageReferences="@(PackageReference)">
+
+ <!-- NOTE: items names here are inconsistent because they match prior implementation
+ (that was spread across different tasks/targets) for backwards compatibility. -->
+ <Output TaskParameter="Analyzers" ItemName="ResolvedAnalyzers" />
+ <Output TaskParameter="ApphostsForShimRuntimeIdentifiers" ItemName="_ApphostsForShimRuntimeIdentifiersResolvePackageAssets" />
+ <Output TaskParameter="ContentFilesToPreprocess" ItemName="_ContentFilesToPreprocess" />
+ <Output TaskParameter="FrameworkAssemblies" ItemName="ResolvedFrameworkAssemblies" />
+ <Output TaskParameter="FrameworkReferences" ItemName="TransitiveFrameworkReference" />
+ <Output TaskParameter="NativeLibraries" ItemName="NativeCopyLocalItems" />
+ <Output TaskParameter="ResourceAssemblies" ItemName="ResourceCopyLocalItems" />
+ <Output TaskParameter="RuntimeAssemblies" ItemName="RuntimeCopyLocalItems" />
+ <Output TaskParameter="RuntimeTargets" ItemName="RuntimeTargetsCopyLocalItems" />
+ <Output TaskParameter="CompileTimeAssemblies" ItemName="ResolvedCompileFileDefinitions" />
+ <Output TaskParameter="TransitiveProjectReferences" ItemName="_TransitiveProjectReferences" />
+ <Output TaskParameter="PackageFolders" ItemName="AssetsFilePackageFolder" />
+ <Output TaskParameter="PackageDependencies" ItemName="PackageDependencies" />
+ </ResolvePackageAssets>
+
+ <ItemGroup Condition="'$(UseAppHostFromAssetsFile)' == 'true'">
+ <_NativeRestoredAppHostNETCore Include="@(NativeCopyLocalItems)"
+ Condition="'%(NativeCopyLocalItems.FileName)%(NativeCopyLocalItems.Extension)' == '$(_DotNetAppHostExecutableName)'"/>
+ </ItemGroup>
+
+ <ItemGroup Condition="'@(_ApphostsForShimRuntimeIdentifiers)' == ''">
+ <_ApphostsForShimRuntimeIdentifiers Include="@(_ApphostsForShimRuntimeIdentifiersResolvePackageAssets)"/>
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ ResolvePackageDependenciesDesignTime
+
+ Aggregate the dependencies produced by ResolvePackageDependencies to a form
+ that's consumable by an IDE to display package dependencies.
+ ============================================================
+ -->
+
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.PreprocessPackageDependenciesDesignTime"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="ResolvePackageDependenciesDesignTime"
+ Returns="@(_DependenciesDesignTime)"
+ DependsOnTargets="RunResolvePackageDependencies;ResolveAssemblyReferencesDesignTime">
+
+ <PreprocessPackageDependenciesDesignTime
+ TargetDefinitions="@(TargetDefinitions)"
+ PackageDefinitions="@(PackageDefinitions)"
+ FileDefinitions="@(FileDefinitions)"
+ PackageDependencies="@(PackageDependencies)"
+ FileDependencies="@(FileDependencies)"
+ References="@(Reference)"
+ DefaultImplicitPackages="$(DefaultImplicitPackages)"
+ InputDiagnosticMessages="@(DiagnosticMessages)"
+ TargetFrameworkMoniker="$(NuGetTargetMoniker)">
+
+ <Output TaskParameter="DependenciesDesignTime" ItemName="_DependenciesDesignTime" />
+ </PreprocessPackageDependenciesDesignTime>
+
+ </Target>
+
+ <!--
+ ============================================================
+ CollectSDKReferencesDesignTime
+
+ Aggregates the sdk specified as project items and implicit
+ packages references.
+ ============================================================
+ -->
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.CollectSDKReferencesDesignTime"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="CollectSDKReferencesDesignTime"
+ Returns="@(_SDKReference)"
+ DependsOnTargets="CollectPackageReferences">
+
+ <CollectSDKReferencesDesignTime
+ SdkReferences="@(SdkReference)"
+ PackageReferences="@(PackageReference)"
+ DefaultImplicitPackages="$(DefaultImplicitPackages)">
+
+ <Output TaskParameter="SDKReferencesDesignTime" ItemName="_SDKReference" />
+ </CollectSDKReferencesDesignTime>
+
+ </Target>
+
+ <!--
+ ============================================================
+ CollectResolvedSDKReferencesDesignTime
+
+ Aggregates the sdk specified as project items and implicit
+ packages produced by ResolvePackageDependencies.
+ ============================================================
+ -->
+ <Target Name="CollectResolvedSDKReferencesDesignTime"
+ Returns="@(_ResolvedSDKReference)"
+ DependsOnTargets="ResolveSDKReferencesDesignTime;CollectPackageReferences">
+
+ <CollectSDKReferencesDesignTime
+ SdkReferences="@(ResolvedSdkReference)"
+ PackageReferences="@(PackageReference)"
+ DefaultImplicitPackages="$(DefaultImplicitPackages)">
+
+ <Output TaskParameter="SDKReferencesDesignTime" ItemName="_ResolvedSDKReference" />
+ </CollectSDKReferencesDesignTime>
+
+ </Target>
+
+ <!--
+ ============================================================
+ RunProduceContentAssets
+
+ Process content assets by handling preprocessing tokens where necessary, and
+ produce copy local items, content items grouped by "build action" and file writes
+ ============================================================
+ -->
+
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.ProduceContentAssets"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <Target Name="RunProduceContentAssets"
+ DependsOnTargets="ResolvePackageAssets"
+ Condition="'@(_ContentFilesToPreprocess)' != ''">
+
+ <ProduceContentAssets
+ ContentFileDependencies="@(_ContentFilesToPreprocess)"
+ ContentPreprocessorValues="@(PreprocessorValue)"
+ ContentPreprocessorOutputDirectory="$(ContentPreprocessorOutputDirectory)"
+ ProduceOnlyPreprocessorFiles="true"
+ ProjectLanguage="$(Language)">
+
+ <Output TaskParameter="CopyLocalItems" ItemName="_ContentCopyLocalItems" />
+ <Output TaskParameter="ProcessedContentItems" ItemName="_ProcessedContentItems" />
+ <Output TaskParameter="FileWrites" ItemName="FileWrites" />
+ </ProduceContentAssets>
+
+ <!-- The items in _ProcessedContentItems need to go into the appropriately-named item group,
+ but the names depend upon the items themselves. Split it apart. -->
+ <CreateItem Include="@(_ProcessedContentItems)" Condition="'@(_ProcessedContentItems)' != ''">
+ <Output TaskParameter="Include" ItemName="%(_ProcessedContentItems.ProcessedItemType)" />
+ </CreateItem>
+
+ </Target>
+
+ <!--
+ ============================================================
+ ReportAssetsLogMessages
+
+ Report Log Messages in the assets file to MSBuild and raise them as
+ DiagnosticMessage items that can be consumed downstream (e.g. by the
+ dependency node in the solution explorer)
+ ============================================================
+ -->
+
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.ReportAssetsLogMessages"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+ <UsingTask TaskName="Microsoft.NET.Build.Tasks.LoadAssetsFile"
+ AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
+
+ <!-- The condition on this target causes it to be skipped during design-time builds if
+ the restore operation hasn't run yet. This is to avoid displaying an error in
+ the Visual Studio error list when a project is created before NuGet restore has
+ run and created the assets file. -->
+ <Target Name="ReportAssetsLogMessages"
+ Condition="'$(EmitAssetsLogMessages)' == 'true' And ('$(DesignTimeBuild)' != 'true' Or Exists('$(ProjectAssetsFile)'))">
+
+ <!-- Load the assets file in a separate task, so that if the file itself can't be loaded (or isn't set), we
+ can generate an error without continuing (since ReportAssetsLogMessages uses ContinueOnError="ErrorAndContinue" -->
+ <LoadAssetsFile ProjectAssetsFile="$(ProjectAssetsFile)" />
+
+ <ReportAssetsLogMessages
+ ProjectAssetsFile="$(ProjectAssetsFile)"
+ ContinueOnError="ErrorAndContinue">
+
+ <Output TaskParameter="DiagnosticMessages" ItemName="DiagnosticMessages" />
+ </ReportAssetsLogMessages>
+
+ </Target>
+
+ <!--
+ ============================================================
+ Reference Targets: For populating References based on lock file
+ - ResolveLockFileReferences
+ ============================================================
+ -->
+
+ <Target Name="ResolveLockFileReferences"
+ DependsOnTargets="ResolvePackageAssets">
+
+ <ItemGroup Condition="'$(MarkPackageReferencesAsExternallyResolved)' == 'true'">
+ <!--
+ Update Reference items with NuGetPackageId metadata to set ExternallyResolved appropriately.
+ NetStandard.Library adds its assets in targets this way and not in the standard way that
+ would get ExternallyResolved set in ResolvePackageAssets.
+ -->
+ <Reference Condition="'%(Reference.NuGetPackageId)' != ''">
+ <ExternallyResolved>true</ExternallyResolved>
+ </Reference>
+
+ <!-- Add framework references from NuGet packages here, so that if there is also a matching reference from a NuGet package,
+ it will be treated the same as a reference from the project file. If there is already an explicit Reference from the
+ project, use that, in order to preserve metadata (such as aliases). -->
+ <Reference Include="@(ResolvedFrameworkAssemblies)"
+ Exclude="@(Reference)" />
+
+ </ItemGroup>
+
+ <!-- If there are any references from a NuGet package that match a simple reference which
+ would resolve to a framework assembly, then update the NuGet references to use the
+ simple name as the ItemSpec. This will prevent the VS project system from marking
+ a reference with a warning. See https://github.com/dotnet/sdk/issues/1499 -->
+ <JoinItems Left="@(ResolvedCompileFileDefinitions)" LeftKey="FileName" LeftMetadata="*"
+ Right="@(Reference)" RightKey="" RightMetadata="*">
+ <Output TaskParameter="JoinResult" ItemName="_JoinedResolvedCompileFileDefinitions" />
+ </JoinItems>
+
+ <ItemGroup>
+ <Reference Remove="@(_JoinedResolvedCompileFileDefinitions)" />
+ <Reference Include="@(_JoinedResolvedCompileFileDefinitions)" />
+ </ItemGroup>
+
+ <ItemGroup>
+ <ResolvedCompileFileDefinitionsToAdd Include="@(ResolvedCompileFileDefinitions)" />
+ <ResolvedCompileFileDefinitionsToAdd Remove="%(_JoinedResolvedCompileFileDefinitions.HintPath)" />
+
+ <!-- Add the references we computed -->
+ <Reference Include="@(ResolvedCompileFileDefinitionsToAdd)" />
+ </ItemGroup>
+
+ </Target>
+
+ <!--
+ ============================================================
+ ProjectReference Targets: Include transitive project references before
+ ResolveProjectReferences is called
+ - IncludeTransitiveProjectReferences
+ ============================================================
+ -->
+
+ <Target Name="IncludeTransitiveProjectReferences"
+ DependsOnTargets="ResolvePackageAssets"
+ Condition="'$(DisableTransitiveProjectReferences)' != 'true'">
+ <ItemGroup>
+ <ProjectReference Include="@(_TransitiveProjectReferences)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ Analyzer Targets: For populating Analyzers based on lock file
+ - ResolveLockFileAnalyzers
+ ============================================================
+ -->
+ <Target Name="ResolveLockFileAnalyzers"
+ DependsOnTargets="ResolvePackageAssets">
+ <ItemGroup>
+ <Analyzer Include="@(ResolvedAnalyzers)" />
+ </ItemGroup>
+ </Target>
+
+ <!--
+ ============================================================
+ ResolveLockFileCopyLocalFiles
+ Resolves the files from the assets file to copy for build and publish.
+ ============================================================
+ -->
+ <Target Name="ResolveLockFileCopyLocalFiles"
+ DependsOnTargets="ResolvePackageAssets;RunProduceContentAssets">
+
+ <ItemGroup>
+ <_ResolvedCopyLocalBuildAssets Include="@(RuntimeCopyLocalItems)"
+ Condition="'%(RuntimeCopyLocalItems.CopyLocal)' == 'true'" />
+ <_ResolvedCopyLocalBuildAssets Include="@(ResourceCopyLocalItems)"
+ Condition="'%(ResourceCopyLocalItems.CopyLocal)' == 'true'" />
+ <!-- Always exclude the apphost executable from copy local assets; we will copy the generated apphost instead. -->
+ <_ResolvedCopyLocalBuildAssets Include="@(NativeCopyLocalItems)"
+ Exclude="@(_NativeRestoredAppHostNETCore)"
+ Condition="'%(NativeCopyLocalItems.CopyLocal)' == 'true'" />
+ <_ResolvedCopyLocalBuildAssets Include="@(RuntimeTargetsCopyLocalItems)"
+ Condition="'%(RuntimeTargetsCopyLocalItems.CopyLocal)' == 'true'" />
+
+ <ReferenceCopyLocalPaths Include="@(_ContentCopyLocalItems)" />
+ <ReferenceCopyLocalPaths Include="@(_ResolvedCopyLocalBuildAssets)"
+ Condition="'$(CopyLocalLockFileAssemblies)' == 'true'" />
+ </ItemGroup>
+
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolutionStubs.targets b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolutionStubs.targets
new file mode 100644
index 0000000000..a77dbb3f45
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolutionStubs.targets
@@ -0,0 +1,26 @@
+<!--
+***********************************************************************************************
+Microsoft.PackageDependencyResolutionStubs.targets
+
+WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
+ created a backup copy. Incorrect changes to this file will make it
+ impossible to load or build your projects from the command-line or the IDE.
+
+Copyright (c) .NET Foundation. All rights reserved.
+***********************************************************************************************
+-->
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+
+ <!--
+ ============================================================
+ ResolvePackageAssets
+
+ No operation version of ResolvePackageAssets. For builds that does not require nuget restore
+ ============================================================
+ -->
+
+ <Target Name="ResolvePackageAssets" >
+
+ </Target>
+
+</Project>
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.DotNet.PlatformAbstractions.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.DotNet.PlatformAbstractions.dll
new file mode 100644
index 0000000000..1e66373fe0
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.DotNet.PlatformAbstractions.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.Extensions.DependencyModel.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.Extensions.DependencyModel.dll
new file mode 100644
index 0000000000..bb524bce11
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.Extensions.DependencyModel.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll
new file mode 100644
index 0000000000..9e68e42142
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll.config b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll.config
new file mode 100644
index 0000000000..ac72e464e7
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.Build.Tasks.dll.config
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<configuration>
+ <runtime>
+ <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
+ <dependentAssembly>
+ <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
+ <bindingRedirect oldVersion="0.0.0.0-1.2.2.0" newVersion="1.2.2.0" />
+ </dependentAssembly>
+ </assemblyBinding>
+ </runtime>
+</configuration> \ No newline at end of file
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.HostModel.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.HostModel.dll
new file mode 100644
index 0000000000..5ff3784178
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Microsoft.NET.HostModel.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Newtonsoft.Json.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Newtonsoft.Json.dll
new file mode 100644
index 0000000000..dbcd94f365
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/Newtonsoft.Json.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Common.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Common.dll
new file mode 100644
index 0000000000..56797e32cd
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Common.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Configuration.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Configuration.dll
new file mode 100644
index 0000000000..4598bbdab7
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Configuration.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.DependencyResolver.Core.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.DependencyResolver.Core.dll
new file mode 100644
index 0000000000..30ae4d5f48
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.DependencyResolver.Core.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Frameworks.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Frameworks.dll
new file mode 100644
index 0000000000..e11dcb7d02
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Frameworks.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.LibraryModel.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.LibraryModel.dll
new file mode 100644
index 0000000000..8be7cc0b56
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.LibraryModel.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Packaging.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Packaging.dll
new file mode 100644
index 0000000000..7b52c39aca
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Packaging.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.ProjectModel.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.ProjectModel.dll
new file mode 100644
index 0000000000..e7603d2e5e
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.ProjectModel.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Protocol.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Protocol.dll
new file mode 100644
index 0000000000..3cbbdae66d
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Protocol.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Versioning.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Versioning.dll
new file mode 100644
index 0000000000..68750feceb
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/NuGet.Versioning.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Collections.Immutable.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Collections.Immutable.dll
new file mode 100644
index 0000000000..adcf0f3302
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Collections.Immutable.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Reflection.Metadata.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Reflection.Metadata.dll
new file mode 100644
index 0000000000..0017dbd15c
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/System.Reflection.Metadata.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/cs/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/cs/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..54c483b187
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/cs/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/de/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/de/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..6643656513
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/de/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/es/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/es/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..929b472cad
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/es/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/fr/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/fr/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..19372eb4f5
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/fr/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/it/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/it/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..88b08c687b
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/it/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ja/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ja/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..e7c5a441d9
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ja/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ko/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ko/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..e43a485981
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ko/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pl/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pl/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..ddbd24ff79
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pl/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pt-BR/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pt-BR/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..ca3f6efc5b
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/pt-BR/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ru/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ru/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..f6902ee06f
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/ru/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/tr/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/tr/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..ac9e1f3964
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/tr/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..6bc303d166
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..78ae7c3de6
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/net472/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/Microsoft.NET.Build.Tasks.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/Microsoft.NET.Build.Tasks.dll
new file mode 100644
index 0000000000..6fc274c351
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/Microsoft.NET.Build.Tasks.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/cs/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/cs/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..10389006de
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/cs/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/de/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/de/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..7709d4a001
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/de/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/es/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/es/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..8b9ec96243
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/es/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/fr/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/fr/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..7d7b61eee5
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/fr/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/it/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/it/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..ac4a0e20f9
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/it/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ja/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ja/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..2bda5faa3f
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ja/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ko/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ko/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..8122e07bc9
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ko/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pl/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pl/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..d36af16383
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pl/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pt-BR/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pt-BR/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..2be2b74519
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/pt-BR/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ru/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ru/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..b354219583
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/ru/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/tr/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/tr/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..391d2ba2df
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/tr/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..eb3fcff23a
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hans/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ
diff --git a/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll
new file mode 100644
index 0000000000..c50f53f9ac
--- /dev/null
+++ b/.dotnet/sdk/3.1.100/Sdks/Microsoft.NET.Sdk/tools/netcoreapp2.1/zh-Hant/Microsoft.NET.Build.Tasks.resources.dll
Binary files differ