diff --git a/.gitignore b/.gitignore
new file mode 100644
index 000000000000..39f459f0940a
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,192 @@
+syntax: glob
+
+### VisualStudio ###
+
+# Tool Runtime Dir
+# note: there is no trailing slash so if these are symlinks (which are seen as files,
+# instead of directories), git will still ignore them.
+.dotnet
+.packages
+.tools
+
+# User-specific files
+*.suo
+*.user
+*.userosscache
+*.sln.docstates
+
+# Build results
+artifacts/
+.idea/
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+bld/
+[Bb]in/
+[Oo]bj/
+msbuild.log
+msbuild.err
+msbuild.wrn
+*.binlog
+.deps/
+.dirstamp
+.libs/
+*.lo
+*.o
+
+# Cross directory
+eng/common/cross
+
+# Visual Studio
+.vs/
+
+# MSTest test Results
+[Tt]est[Rr]esult*/
+[Bb]uild[Ll]og.*
+
+#NUNIT
+*.VisualState.xml
+TestResult.xml
+testResults.xml
+
+# Build Results of an ATL Project
+[Dd]ebugPS/
+[Rr]eleasePS/
+dlldata.c
+
+*_i.c
+*_p.c
+*.ilk
+*.meta
+*.obj
+*.pch
+*.pdb
+*.pgc
+*.pgd
+*.rsp
+*.sbr
+*.tlb
+*.tli
+*.tlh
+*.tmp
+*.tmp_proj
+*.log
+*.vspscc
+*.vssscc
+.builds
+*.pidb
+*.svclog
+*.scc
+
+# Chutzpah Test files
+_Chutzpah*
+
+# Visual C++ cache files
+ipch/
+*.aps
+*.ncb
+*.opendb
+*.opensdf
+*.sdf
+*.cachefile
+*.VC.db
+
+# Visual Studio profiler
+*.psess
+*.vsp
+*.vspx
+
+# TFS 2012 Local Workspace
+$tf/
+
+# Guidance Automation Toolkit
+*.gpState
+
+# ReSharper is a .NET coding add-in
+_ReSharper*/
+*.[Rr]e[Ss]harper
+*.DotSettings.user
+
+# JustCode is a .NET coding addin-in
+.JustCode
+
+# TeamCity is a build add-in
+_TeamCity*
+
+# NuGet Packages
+*.nupkg
+*.nuget.g.props
+*.nuget.g.targets
+*.nuget.cache
+**/packages/*
+project.lock.json
+project.assets.json
+*.nuget.dgspec.json
+
+# C/C++ extension for Visual Studio Code
+browse.VC.db
+# Local settings folder for Visual Studio Code
+**/.vscode/**
+!**/.vscode/c_cpp_properties.json
+
+### Windows ###
+
+# Folder config file
+Desktop.ini
+
+# Recycle Bin used on file shares
+$RECYCLE.BIN/
+
+# Windows Installer files
+*.cab
+*.msi
+*.msm
+*.msp
+
+# Windows shortcuts
+*.lnk
+
+### Linux ###
+
+*~
+
+# KDE directory preferences
+.directory
+
+### OSX ###
+
+.DS_Store
+.AppleDouble
+.LSOverride
+
+# Icon must end with two \r
+Icon
+
+# Thumbnails
+._*
+
+# Files that might appear on external disk
+.Spotlight-V100
+.Trashes
+
+# Directories potentially created on remote AFP share
+.AppleDB
+.AppleDesktop
+Network Trash Folder
+Temporary Items
+.apdisk
+
+# vim temporary files
+[._]*.s[a-w][a-z]
+[._]s[a-w][a-z]
+*.un~
+Session.vim
+.netrwhist
+
+# Visual Studio Code
+.vscode/
+.devcontainer/
+
+# VS debug support files
+launchSettings.json
diff --git a/Directory.Build.props b/Directory.Build.props
new file mode 100644
index 000000000000..89e0550e7f4f
--- /dev/null
+++ b/Directory.Build.props
@@ -0,0 +1,18 @@
+
+
+
+
+ $(CopyrightNetFoundation)
+ MIT
+ True
+ embedded
+ true
+ Latest
+ true
+
+
+ true
+ $(MicrosoftNETCoreAppVersion)
+
+
diff --git a/Directory.Build.targets b/Directory.Build.targets
new file mode 100644
index 000000000000..39001e216baf
--- /dev/null
+++ b/Directory.Build.targets
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/Experiment.sln b/Experiment.sln
new file mode 100644
index 000000000000..2549f6729061
--- /dev/null
+++ b/Experiment.sln
@@ -0,0 +1,48 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 15
+VisualStudioVersion = 15.0.26124.0
+MinimumVisualStudioVersion = 15.0.26124.0
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Experiment", "src\Experiment.csproj", "{B7977360-6671-4707-9A1C-1C29D5BE2674}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Experiment.Tests", "tests\Experiment.Tests.csproj", "{CE81B6BD-CCCC-4223-9069-B28435A4A5C1}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|x64 = Debug|x64
+ Debug|x86 = Debug|x86
+ Release|Any CPU = Release|Any CPU
+ Release|x64 = Release|x64
+ Release|x86 = Release|x86
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|x64.Build.0 = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Debug|x86.Build.0 = Debug|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|Any CPU.Build.0 = Release|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|x64.ActiveCfg = Release|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|x64.Build.0 = Release|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|x86.ActiveCfg = Release|Any CPU
+ {B7977360-6671-4707-9A1C-1C29D5BE2674}.Release|x86.Build.0 = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|x64.Build.0 = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|x86.ActiveCfg = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Debug|x86.Build.0 = Debug|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|x64.ActiveCfg = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|x64.Build.0 = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|x86.ActiveCfg = Release|Any CPU
+ {CE81B6BD-CCCC-4223-9069-B28435A4A5C1}.Release|x86.Build.0 = Release|Any CPU
+ EndGlobalSection
+EndGlobal
diff --git a/NuGet.config b/NuGet.config
new file mode 100644
index 000000000000..fed8b5c2e8ec
--- /dev/null
+++ b/NuGet.config
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/build.cmd b/build.cmd
new file mode 100644
index 000000000000..91c6884d7c10
--- /dev/null
+++ b/build.cmd
@@ -0,0 +1,3 @@
+@echo off
+powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*"
+exit /b %ErrorLevel%
\ No newline at end of file
diff --git a/build.sh b/build.sh
new file mode 100755
index 000000000000..8477d5af8817
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,16 @@
+#!/usr/bin/env bash
+
+source="${BASH_SOURCE[0]}"
+
+# resolve $SOURCE until the file is no longer a symlink
+while [[ -h $source ]]; do
+ scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+ source="$(readlink "$source")"
+
+ # if $source was a relative symlink, we need to resolve it relative to the path where the
+ # symlink file was located
+ [[ $source != /* ]] && source="$scriptroot/$source"
+done
+
+scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
+"$scriptroot/eng/common/build.sh" --build --restore $@
diff --git a/eng/Build.props b/eng/Build.props
new file mode 100644
index 000000000000..c0ad5647557b
--- /dev/null
+++ b/eng/Build.props
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
new file mode 100644
index 000000000000..50747480a7db
--- /dev/null
+++ b/eng/Version.Details.xml
@@ -0,0 +1,15 @@
+
+
+
+
+ https://github.com/dotnet/runtime
+ d67cc2cceb4dc8ecd15f5b6663d93f79de3954fd
+
+
+
+
+ https://github.com/dotnet/arcade
+ f2f45f7a856fe4949735e574f7a0350bda48264f
+
+
+
diff --git a/eng/Versions.props b/eng/Versions.props
new file mode 100644
index 000000000000..fef76d56b2b4
--- /dev/null
+++ b/eng/Versions.props
@@ -0,0 +1,19 @@
+
+
+
+
+ 1.0.0
+
+ 1
+ 0
+ 0
+ alpha
+
+ false
+
+ 6.0.0-alpha.1.20514.9
+ 16.7.1
+ 2.4.1
+ 2.4.3
+
+
diff --git a/eng/pipelines/runtimelab.yml b/eng/pipelines/runtimelab.yml
new file mode 100644
index 000000000000..c6a1ec4f35d8
--- /dev/null
+++ b/eng/pipelines/runtimelab.yml
@@ -0,0 +1,74 @@
+# Setting batch to true, triggers one build at a time.
+# if there is a push while a build in progress, it will wait,
+# until the running build finishes, and produce a build with all the changes
+# that happened during the last build.
+trigger:
+ batch: true
+ branches:
+ include:
+ - feature/*
+ - standalone-template
+ paths:
+ include:
+ - '*'
+ exclude:
+ - eng/Version.Details.xml
+ - .github/*
+ - docs/*
+ - CODE-OF-CONDUCT.md
+ - LICENSE.TXT
+ - PATENTS.TXT
+ - README.md
+ - SECURITY.md
+ - THIRD-PARTY-NOTICES.TXT
+
+pr:
+ branches:
+ include:
+ - feature/*
+ - standalone-template
+ paths:
+ include:
+ - '*'
+ exclude:
+ - eng/Version.Details.xml
+ - .github/*
+ - docs/*
+ - CODE-OF-CONDUCT.md
+ - LICENSE.TXT
+ - PATENTS.TXT
+ - README.md
+ - SECURITY.md
+ - THIRD-PARTY-NOTICES.TXT
+
+stages:
+- stage: Build
+ jobs:
+
+ #
+ # Build on Debug configuration
+ #
+ - template: /eng/pipelines/templates/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/templates/build-job.yml
+ buildConfig: Debug
+ platforms:
+ - Linux_x64
+ - Windows_NT_x64
+ - OSX_x64
+ jobParameters:
+ isOfficialBuild: ${{ variables.isOfficialBuild }}
+
+ #
+ # Build on Release configuration
+ #
+ - template: /eng/pipelines/templates/platform-matrix.yml
+ parameters:
+ jobTemplate: /eng/pipelines/templates/build-job.yml
+ buildConfig: Release
+ platforms:
+ - Linux_x64
+ - Windows_NT_x64
+ - OSX_x64
+ jobParameters:
+ isOfficialBuild: ${{ variables.isOfficialBuild }}
diff --git a/eng/pipelines/templates/build-job.yml b/eng/pipelines/templates/build-job.yml
new file mode 100644
index 000000000000..c26034d876f6
--- /dev/null
+++ b/eng/pipelines/templates/build-job.yml
@@ -0,0 +1,51 @@
+parameters:
+ variables: {}
+ osGroup: ''
+ archType: ''
+ buildConfig: ''
+ container: ''
+ pool: {}
+ isOfficialBuild: ''
+
+jobs:
+
+- template: /eng/common/templates/job/job.yml
+ parameters:
+ displayName: ${{ format('{0} {1} {2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
+ name: ${{ format('{0}_{1}_{2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
+ enableTelemetry: ${{ parameters.isOfficialBuild }}
+ helixRepo: dotnet/runtimelab
+ pool: ${{ parameters.pool }}
+ enablePublishBuildArtifacts: true
+
+ ${{ if ne(parameters.container, '') }}:
+ ${{ if eq(parameters.container.registry, 'mcr') }}:
+ container: ${{ format('{0}:{1}', 'mcr.microsoft.com/dotnet-buildtools/prereqs', parameters.container.image) }}
+ ${{ if ne(parameters.container.registry, 'mcr') }}:
+ container: ${{ format('{0}:{1}', parameters.container.registry, parameters.container.image) }}
+
+ variables:
+ - _BuildConfig: ${{ parameters.buildConfig }}
+ - _buildScript: build.cmd
+
+ - ${{ if ne(parameters.osGroup, 'Windows_NT') }}:
+ - _buildScript: ./build.sh
+
+ steps:
+ - script: $(_buildScript)
+ -test
+ -ci
+ -c ${{ parameters.buildConfig }}
+ /p:TargetPlatform=${{ parameters.archType }}
+ displayName: Build and Test
+
+ - task: PublishTestResults@2
+ displayName: Publish TRX Test Results
+ inputs:
+ testResultsFormat: 'VSTest'
+ testResultsFiles: '*.xml'
+ searchFolder: '$(Build.SourcesDirectory)/artifacts/TestResults/$(_BuildConfig)'
+ testRunTitle: ${{ format('{0}_{1}_{2}', parameters.osGroup, parameters.archType, parameters.buildConfig) }}
+ mergeTestResults: ${{ parameters.mergeTestResults }}
+ continueOnError: true
+ condition: always()
diff --git a/eng/pipelines/templates/platform-matrix.yml b/eng/pipelines/templates/platform-matrix.yml
new file mode 100644
index 000000000000..4b50ac381c52
--- /dev/null
+++ b/eng/pipelines/templates/platform-matrix.yml
@@ -0,0 +1,43 @@
+parameters:
+ jobTemplate: ''
+ buildConfig: ''
+ platforms: []
+ jobParameters: {}
+
+jobs:
+
+# Linux x64
+- ${{ if containsValue(parameters.platforms, 'Linux_x64') }}:
+ - template: ${{ parameters.jobTemplate }}
+ parameters:
+ variables: ${{ parameters.variables }}
+ osGroup: Linux
+ archType: x64
+ pool:
+ vmImage: 'ubuntu-latest'
+ buildConfig: ${{ parameters.buildConfig }}
+ ${{ insert }}: ${{ parameters.jobParameters }}
+
+# OSX x64
+- ${{ if containsValue(parameters.platforms, 'OSX_x64') }}:
+ - template: ${{ parameters.jobTemplate }}
+ parameters:
+ variables: ${{ parameters.variables }}
+ osGroup: OSX
+ archType: x64
+ pool:
+ vmImage: 'macOS-latest'
+ buildConfig: ${{ parameters.buildConfig }}
+ ${{ insert }}: ${{ parameters.jobParameters }}
+
+# OSX x64
+- ${{ if containsValue(parameters.platforms, 'Windows_NT_x64') }}:
+ - template: ${{ parameters.jobTemplate }}
+ parameters:
+ variables: ${{ parameters.variables }}
+ osGroup: Windows_NT
+ archType: x64
+ pool:
+ vmImage: 'windows-latest'
+ buildConfig: ${{ parameters.buildConfig }}
+ ${{ insert }}: ${{ parameters.jobParameters }}
\ No newline at end of file
diff --git a/eng/testing/.runsettings b/eng/testing/.runsettings
new file mode 100644
index 000000000000..4e8b0591966d
--- /dev/null
+++ b/eng/testing/.runsettings
@@ -0,0 +1,33 @@
+
+
+
+
+ 300000
+
+ $$RESULTSDIRECTORY$$
+
+ $$SOLUTIONDIRECTORY$$
+
+ $$TARGETPLATFORM$$
+ $$DOTNETHOSTPATH$$
+
+
+
+
+
+ $$TRXRESULTSNAME$$
+
+
+
+
+ $$HTMLRESULTSNAME$$
+
+
+
+
+ normal
+
+
+
+
+
diff --git a/eng/testing/runsettings.targets b/eng/testing/runsettings.targets
new file mode 100644
index 000000000000..bd765a98b51f
--- /dev/null
+++ b/eng/testing/runsettings.targets
@@ -0,0 +1,40 @@
+
+
+
+ $(MSBuildThisFileDirectory).runsettings
+ $(OutDir).runsettings
+
+ $(RunSettingsAppOutputFilePath)
+
+ $(MSBuildProjectName)_$(TargetFramework)_$(TargetPlatform)
+
+ $(RunSettingsOutputFilePath)
+ $(RunSettingsFilePath)
+
+
+
+
+
+ $([System.IO.File]::ReadAllText('$(RunSettingsInputFilePath)'))
+ $(RunSettingsFileContent.Replace('$$RESULTSDIRECTORY$$', '$(ArtifactsTestResultsDir)')
+ .Replace('$$SOLUTIONDIRECTORY$$', '$(RepoRoot)')
+ .Replace('$$TARGETPLATFORM$$', '$(TargetPlatform)')
+ .Replace('$$TRXRESULTSNAME$$', '$(ResultsFileName).xml')
+ .Replace('$$HTMLRESULTSNAME$$', '$(ResultsFileName).html')
+ .Replace('$$DOTNETHOSTPATH$$', '$(DotNetTool)'))
+
+
+
+
+
+
+ $(RunSettingsOutputFilePath)
+ $(RunSettingsFilePath)
+
+
+
\ No newline at end of file
diff --git a/global.json b/global.json
new file mode 100644
index 000000000000..150f505619a5
--- /dev/null
+++ b/global.json
@@ -0,0 +1,16 @@
+{
+ "sdk": {
+ "version": "5.0.100-rc.2.20479.15",
+ "allowPrerelease": true,
+ "rollForward": "major"
+ },
+ "tools": {
+ "dotnet": "5.0.100-rc.2.20479.15",
+ "runtimes": {
+ "dotnet": [ "$(MicrosoftNETCoreAppVersion)" ]
+ }
+ },
+ "msbuild-sdks": {
+ "Microsoft.DotNet.Arcade.Sdk": "6.0.0-beta.20509.12"
+ }
+ }
\ No newline at end of file
diff --git a/src/Experiment.csproj b/src/Experiment.csproj
new file mode 100644
index 000000000000..f208d303c981
--- /dev/null
+++ b/src/Experiment.csproj
@@ -0,0 +1,7 @@
+
+
+
+ net5.0
+
+
+
diff --git a/src/MyClass.cs b/src/MyClass.cs
new file mode 100644
index 000000000000..b0121b4015cc
--- /dev/null
+++ b/src/MyClass.cs
@@ -0,0 +1,9 @@
+using System;
+
+namespace Experiment
+{
+ public class MyClass
+ {
+ public static bool ReturnTrue => true;
+ }
+}
diff --git a/tests/Directory.Build.props b/tests/Directory.Build.props
new file mode 100644
index 000000000000..d694567ab472
--- /dev/null
+++ b/tests/Directory.Build.props
@@ -0,0 +1,16 @@
+
+
+
+
+ false
+ true
+ false
+ x64
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/Directory.Build.targets b/tests/Directory.Build.targets
new file mode 100644
index 000000000000..16273d6e4a6f
--- /dev/null
+++ b/tests/Directory.Build.targets
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/Experiment.Tests.csproj b/tests/Experiment.Tests.csproj
new file mode 100644
index 000000000000..afe9f8351807
--- /dev/null
+++ b/tests/Experiment.Tests.csproj
@@ -0,0 +1,9 @@
+
+
+ net5.0
+
+
+
+
+
+
diff --git a/tests/MyClassTests.cs b/tests/MyClassTests.cs
new file mode 100644
index 000000000000..14d4e5e50104
--- /dev/null
+++ b/tests/MyClassTests.cs
@@ -0,0 +1,14 @@
+using System;
+using Xunit;
+
+namespace Experiment.Tests
+{
+ public class MyClassTests
+ {
+ [Fact]
+ public void Test1()
+ {
+ Assert.True(MyClass.ReturnTrue);
+ }
+ }
+}