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); + } + } +}