PostSharp.Engineering.BuildTools 1.0.97-alpha.1

Prefix Reserved
This is a prerelease version of PostSharp.Engineering.BuildTools.
There is a newer version of this package available.
See the version list below for details.
dotnet add package PostSharp.Engineering.BuildTools --version 1.0.97-alpha.1
                    
NuGet\Install-Package PostSharp.Engineering.BuildTools -Version 1.0.97-alpha.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="PostSharp.Engineering.BuildTools" Version="1.0.97-alpha.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="PostSharp.Engineering.BuildTools" Version="1.0.97-alpha.1" />
                    
Directory.Packages.props
<PackageReference Include="PostSharp.Engineering.BuildTools" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add PostSharp.Engineering.BuildTools --version 1.0.97-alpha.1
                    
#r "nuget: PostSharp.Engineering.BuildTools, 1.0.97-alpha.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package PostSharp.Engineering.BuildTools@1.0.97-alpha.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=PostSharp.Engineering.BuildTools&version=1.0.97-alpha.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=PostSharp.Engineering.BuildTools&version=1.0.97-alpha.1&prerelease
                    
Install as a Cake Tool

PostSharp Engineering

Table of contents

Content

This repository contains common development, build and publishing scripts. It produces two NuGet packages:

  • PostSharp.Engineering.BuildTools is meant to be added as a package reference from the facade C# build program.

  • PostSharp.Engineering.Sdk is meant to be used as an SDK project.

    • AssemblyMetadata.targets: Adds package versions to assembly metadata.
    • BuildOptions.props: Sets the compiler options like language version, nullability and other build options like output path.
    • TeamCity.targets: Enables build and tests reporting to TeamCity.
    • SourceLink.props: Enables SourceLink support.
    • Coverage.props: Enabled code coverage. This script should be imported in test projects only (not in projects being tested). This script adds a package to coverlet so there is no need to have in in test projects (and these references should be removed).
    • MetalamaBranding.props and PostSharpBranding.props: Configure the proper icon for the nuget package.
    • PackagesConfig.targets: Makes the Restore and Pack targets work for projects referencing NuGet using packages.config.
    • WebPublish.targets: Configures the release build of web projects to be published as a zipped artifact.
    • TestsPublish.targets: Configures the release build of test projects to be published as a zipped artifact.

Both packages must be used at the same time.

Concepts

Terminology

A product is almost synonym for repository. There is a single product per repository, and the product name must be the same as the repository name. A product can contain several C# solutions.

Build and testing locally

For details, do Build.ps1 in PowerShell and read the help.

Versioning

Objectives

A major goal of this SDK is to allow to build and test repositories that have references to other repositories without having to publish the nuget package. That is, it is possible and quite easy, with this SDK, to perform builds that reference local clones of repositories. All solutions or projects in the same product share have the same version.

Configuring the version of the current product

The product package version and package version suffix configuration is centralized in the eng\MainVersion.props script via the MainVersion and PackageVersionSuffix properties, respectively. For RTM products, leave the PackageVersionSuffix property value empty.

Configuring the version of dependent products or packages.

Package dependencies versions configuration is centralized in the eng\Versions.props script. Each dependency version is configured in a property named <[DependencyName]Version>, eg. <SystemCollectionsImmutableVersion>.

This property value is then available in all MSBuild project files in the repository and can be used in the PackageReference items. For example:

<ItemGroup>
    <PackageReference Include="System.Collections.Immutable" Version="$(SystemCollectionsImmutableVersion)" />
</ItemGroup>

Using a local build of a referenced product

Dependencies must be checked out under the same root directory (typically c:\src) under their canonic name.

Then, use Build.ps1 dependencies set local <DEPENDENCY> to specify which dependencies should be run locally.

This will generate eng/Versions.g.props, which you should have imported in eng/Versions.props.

Installation

The easiest way to get started is from this repo template: https://github.com/postsharp/PostSharp.Engineering.ProductTemplate.

Step 1. Edit global.json

Add or update the reference to PostSharp.Engineering.Sdk in global.json.

{
  "sdk": {
    "version": "5.0.206",
    "rollForward": "disable"
  },
  "msbuild-sdks": {
    "PostSharp.Engineering.Sdk": "1.0.0"
  }
}

Step 2. Packaging.props

Create eng\Packaging.props file. The content should look like this:

<Project>

    
    <PropertyGroup>
        <Authors>PostSharp Technologies</Authors>
        <PackageProjectUrl>https://github.com/postsharp/Caravela</PackageProjectUrl>
        <PackageTags>PostSharp Caravela AOP</PackageTags>
        <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
        <PackageIcon>PostSharpIcon.png</PackageIcon>
        <PackageLicenseFile>LICENSE.md</PackageLicenseFile>
    </PropertyGroup>

    
    <ItemGroup>
        <None Include="$(MSBuildThisFileDirectory)..\PostSharpIcon.png" Visible="false" Pack="true" PackagePath="" />
        <None Include="$(MSBuildThisFileDirectory)..\LICENSE.md" Visible="false" Pack="true" PackagePath="" />
        <None Include="$(MSBuildThisFileDirectory)..\THIRD-PARTY-NOTICES.TXT" Visible="false" Pack="true" PackagePath="" />
    </ItemGroup>

</Project>

Make sure that all the files referenced in the previous step exist, or modify the file.

Step 3. MainVersion.props

Create eng\MainVersion.props file. The content should look like:

<Project>
    <PropertyGroup>
        <MainVersion>0.3.6</MainVersion>
        <PackageVersionSuffix>-preview</PackageVersionSuffix>
    </PropertyGroup>
</Project>

Additionally, there may be a property named PatchVersion, which may contain a version number with 4 components. The PatchVersion property value MUST start with the value of the MainVersion property. The use case for this property is when a repo A has a version dependency on another repo B but we want to release a patch of repo B without releasing a new build of repo A.

Step 4. Versions.props

Create eng\Versions.props file. The content should look like this (replace My by the name of the repo without dot):

<Project>

    
    <Import Project="MainVersion.props" Condition="!Exists('MyVersion.props')" />
    
    <PropertyGroup>
        <MyVersion>$(MainVersion)$(PackageVersionSuffix)</MyVersion>
        <MyAssemblyVersion>$(MainVersion)</MyAssemblyVersion>
    </PropertyGroup>

    
    <PropertyGroup>
        <RoslynVersion>3.8.0</RoslynVersion>
        <CaravelaCompilerVersion>3.8.12-preview</CaravelaCompilerVersion>
        <MicrosoftCSharpVersion>4.7.0</MicrosoftCSharpVersion>
    </PropertyGroup>

    
    <Import Project="../artifacts/publish/private/MyVersion.props" Condition="Exists('../artifacts/publish/private/MyVersion.props')" />
    <Import Project="Dependencies.props" Condition="Exists('Dependencies.props')" />

    
    <PropertyGroup>
        <AssemblyVersion>$(MyAssemblyVersion)</AssemblyVersion>
        <Version>$(MyVersion)</Version>
    </PropertyGroup>
    

</Project>

Step 5. Directory.Build.props

Add the following content to Directory.Build.props:

<Project>

  <PropertyGroup>
    <RepoDirectory>$(MSBuildThisFileDirectory)</RepoDirectory>
    <RepoKind>AzureRepos</RepoKind>
  </PropertyGroup>

  <Import Project="eng\Versions.props" />
  <Import Project="eng\Packaging.props" />

  <Import Sdk="PostSharp.Engineering.Sdk" Project="BuildOptions.props" />
  <Import Sdk="PostSharp.Engineering.Sdk" Project="CodeQuality.props" />
  <Import Sdk="PostSharp.Engineering.Sdk" Project="SourceLink.props" />

</Project>

Step 6. Directory.Build.targets

Add the following content to Directory.Build.targets:

<Project>

  <Import Sdk="PostSharp.Engineering.Sdk"  Project="AssemblyMetadata.targets" />
  <Import Sdk="PostSharp.Engineering.Sdk"  Project="TeamCity.targets" />

</Project>

Step 7. Create the front-end build project

Create a file eng\src\Build.csproj with the following content:

<Project Sdk="Microsoft.NET.Sdk">

    <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <AssemblyName>Build</AssemblyName>
        <GenerateDocumentationFile>false</GenerateDocumentationFile>
        <LangVersion>latest</LangVersion>
        <Nullable>enable</Nullable>
        <NoWarn>SA0001;CS8002</NoWarn>
    </PropertyGroup>

    <ItemGroup>
        <PackageReference Include="PostSharp.Engineering.BuildTools.csproj" Version="$(PostSharpEngineeringVersion)" />
    </ItemGroup>

</Project>

Create also a file eng\src\Program.cs with content that varies according to your repo. You can use all the power of C# and PowerShell to customize the build. Note that in the PublicArtifacts, the strings $(Configuration) and $(PackageVersion), and only those strings, are replaced by their value.

using PostSharp.Engineering.BuildTools;
using PostSharp.Engineering.BuildTools.Commands.Build;
using Spectre.Console.Cli;
using System.Collections.Immutable;

namespace BuildCaravela
{
    internal class Program
    {
        private static int Main( string[] args )
        {
            var product = new Product
            {
                ProductName = "Caravela",
                Solutions = ImmutableArray.Create<Solution>(
                    new DotNetSolution( "Caravela.sln" )
                    {
                        SupportsTestCoverage = true
                    },
                    new DotNetSolution( "Tests\\Caravela.Framework.TestApp\\Caravela.Framework.TestApp.sln" )
                    {
                        IsTestOnly = true
                    } ),
                PublicArtifacts = ImmutableArray.Create(
                    "bin\\$(Configuration)\\Caravela.Framework.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.TestFramework.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Redist.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Sdk.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.Impl.$(PackageVersion).nupkg",
                    "bin\\$(Configuration)\\Caravela.Framework.DesignTime.Contracts.$(PackageVersion).nupkg" ),
                 Dependencies = ImmutableArray.Create(
                    new ProductDependency("Caravela.Compiler"), 
                    new ProductDependency("PostSharp.Engineering.BuildTools") )    
            };
            var commandApp = new CommandApp();
            commandApp.AddProductCommands( product );

            return commandApp.Run( args );
        }
    }
}

Step 8. Create Build.ps1, the front-end build script

Create Build.ps1 file in the repo root directory. The content should look like:

if ( $env:VisualStudioVersion -eq $null ) {
    Import-Module "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
    Enter-VsDevShell -VsInstallPath "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\" -StartInPath $(Get-Location)
}

& dotnet run --project "$PSScriptRoot\eng\src\Build.csproj" -- $args
exit $LASTEXITCODE

Step 9. Editing .gitignore

Exclude this:

artifacts
eng/tools
*.Import.props

Build Concepts

The code in Program.cs uses the concepts described here.

classDiagram

  class Product {

  }

  class Solution {

  }



  Program o-- "1" Product 
  Product o-- "*" Solution
  Product  o-- "*" DependencyDefinition
  Product  o-- "3" BuildConfigurationInfo
  BuildConfigurationInfo  o-- "*" IBuildTrigger
  BuildConfigurationInfo o-- "*" Publisher
  BuildConfigurationInfo o-- "*" Swapper
  Swapper o-- "*" Tester
  Solution <|-- DotNetSolution
  Solution <|-- MSBuildSolution
  Tester <|-- VSTestTester
  IBuildTrigger <|-- NightlyBuildTrigger
  IBuildTrigger <|-- SourceBuildTrigger
  Publisher <|-- MSDeployPublisher
  Publisher <|-- NuGetPublisher
  Publisher <|-- VsixPublisher
  

  • Program is your program, i.e. BuildMyProduct.
  • Product is a unique instance configured by Program, the root object that defines the build for the whole repo.
  • Solution represents a solution, project, or other build script in your repo. A solution is something that can be restored, built, packed, tested. Two standard implementations are DotNetSolution and MSBuildSolution.
  • BuildConfigurationInfo represents properties that are specific to a build configuration (i.e. Debug, Release or Public) for the product.
  • DependencyDefinition are dependencies to other repositories.
  • Publisher is something that publishes, or deploys, an already-built artefact to a feed, marketplace, deployment slot, or anything. There are standard implementations for NuGet, VSIX, web sites.
  • Swapper is something that swaps a staging deployment slot into the production deployment slot.
  • Tester is a test suite, typically running against a staging deployment, that must execute successfully before the staging deployment is swapped into the production deployment.

Continuous integration

We use TeamCity as our CI/CD pipeline, and we use Kotlin scripts stored in the Git repo. For an example, see the .teamcity directory the current repo.

Artifacts

All TeamCity artifacts are published under artifacts/publish. All build configurations should export and import these artifacts.

Commands

All TeamCity build configurations use the front-end Build.ps1:

  • Debug Build and Test: Build.ps1 test --numbered %build.number%
  • Release Build and Test: Build.ps1 test --public --sign
  • Publish to internal package sources: Build.ps1 publish
  • Publish to internal and public package source: Build.ps1 publish --public

Required environment variables

  • SIGNSERVER_SECRET
  • INTERNAL_NUGET_PUSH_URL
  • INTERNAL_NUGET_API_KEY
  • NUGET_ORG_API_KEY
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on PostSharp.Engineering.BuildTools:

Package Downloads
PostSharp.Engineering.BuildTools.AWS

Package Description

PostSharp.Engineering.DocFx

A multi-repo build orchestrator used by PostSharp Technologies for its products and for Metalama.

GitHub repositories (1)

Showing the top 1 popular GitHub repositories that depend on PostSharp.Engineering.BuildTools:

Repository Stars
metalama/Metalama
A meta-programming framework for code generation, aspect-oriented programming, and architecture verification of large C# codebases.
Version Downloads Last Updated
2023.2.186 0 9/16/2025
2023.2.185 22 9/16/2025
2023.2.184 48 9/15/2025
2023.2.183 41 9/15/2025
2023.2.182 30 9/15/2025
2023.2.181 25 9/15/2025
2023.2.180 24 9/15/2025
2023.2.179 120 9/10/2025
2023.2.178 329 9/2/2025
2023.2.177 133 9/2/2025
2023.2.176 158 9/2/2025
2023.2.175 135 9/2/2025
2023.2.174 130 9/2/2025
2023.2.173 142 9/1/2025
2023.2.172 133 9/1/2025
2023.2.171 87 7/19/2025
2023.2.170 422 5/18/2025
2023.2.169 1,277 5/16/2025
2023.2.168 226 5/8/2025
2023.2.167 224 4/28/2025
2023.2.166 268 4/23/2025
2023.2.165 183 4/13/2025
2023.2.164 308 4/12/2025
2023.2.163 176 4/12/2025
2023.2.162 427 3/28/2025
2023.2.161 159 3/28/2025
2023.2.160 802 3/14/2025
2023.2.159 628 3/1/2025
2023.2.158 154 2/27/2025
2023.2.157 942 2/10/2025
2023.2.156 488 2/5/2025
2023.2.155 128 2/3/2025
2023.2.154 175 1/10/2025
2023.2.153 203 1/10/2025
2023.2.152 1,068 12/12/2024
2023.2.151 159 11/22/2024
2023.2.150 362 11/22/2024
2023.2.149 148 11/21/2024
2023.2.148 148 11/20/2024
2023.2.147 591 11/19/2024
2023.2.146 152 11/15/2024
2023.2.145 154 11/12/2024
2023.2.144 166 11/12/2024
2023.2.143 155 11/11/2024
2023.2.142 469 11/7/2024
2023.2.141 324 11/7/2024
2023.2.140 2,286 11/6/2024
2023.2.139 312 11/6/2024
2023.2.138 146 11/5/2024
2023.2.137 440 10/24/2024
2023.2.136 3,094 10/14/2024
2023.2.135 958 10/4/2024
2023.2.134 200 9/29/2024
2023.2.133 154 9/25/2024
2023.2.132 249 9/24/2024
2023.2.131 146 9/24/2024
2023.2.130 323 9/11/2024
2023.2.129 2,399 9/11/2024
2023.2.128 163 9/11/2024
2023.2.127 161 9/10/2024
2023.2.126 315 9/9/2024
2023.2.125 170 9/9/2024
2023.2.124 430 9/6/2024
2023.2.123 202 8/29/2024
2023.2.122 1,136 8/28/2024
2023.2.121 151 8/27/2024
2023.2.120 164 8/27/2024
2023.2.119 451 8/27/2024
2023.2.118 163 8/27/2024
2023.2.117 202 8/27/2024
2023.2.116 514 8/9/2024
2023.2.115 339 8/5/2024
2023.2.114 134 8/5/2024
2023.2.113 361 7/25/2024
2023.2.112 310 7/12/2024
2023.2.111 2,288 7/12/2024
2023.2.110 488 7/10/2024
2023.2.109 1,912 6/10/2024
2023.2.108 371 5/30/2024
2023.2.107 195 5/28/2024
2023.2.106 463 5/27/2024
2023.2.105 159 5/24/2024
2023.2.104 180 5/23/2024
2023.2.103 166 5/23/2024
2023.2.102 227 5/23/2024
2023.2.101 151 5/23/2024
2023.2.100 174 5/22/2024
2023.2.99 161 5/22/2024
2023.2.98 383 5/22/2024
2023.2.97 157 5/22/2024
2023.2.96 183 5/22/2024
2023.2.95 159 5/21/2024
2023.2.94 151 5/21/2024
2023.2.93 328 5/19/2024
2023.2.92 158 5/19/2024
2023.2.91 196 5/18/2024
2023.2.90 423 5/15/2024
2023.2.89 224 5/15/2024
2023.2.88 156 5/15/2024
2023.2.87 153 5/13/2024
2023.2.86 987 4/29/2024
2023.2.85 473 4/23/2024
2023.2.84 763 4/2/2024
2023.2.83 4,260 3/28/2024
2023.2.82 172 3/26/2024
2023.2.81 153 3/23/2024
2023.2.80 424 3/22/2024
2023.2.79 173 3/13/2024
2023.2.78 564 2/12/2024
2023.2.77 213 1/10/2024
2023.2.76 939 1/8/2024
2023.2.75 350 1/8/2024
2023.2.74 186 1/5/2024
2023.2.73 171 1/5/2024
2023.2.72 171 1/5/2024
2023.2.71 496 1/3/2024
2023.2.70 3,417 1/2/2024
2023.2.69 177 12/22/2023
2023.2.68 538 12/21/2023
2023.2.67 177 12/19/2023
2023.2.66 170 12/18/2023
2023.2.65 175 12/18/2023
2023.2.64 877 12/12/2023
2023.2.63 285 12/1/2023
2023.2.62 535 12/1/2023
2023.2.61 244 11/30/2023
2023.2.60 190 11/30/2023
2023.2.59 165 11/30/2023
2023.2.58 419 11/13/2023
2023.2.57 517 10/25/2023
2023.2.56 1,277 10/23/2023
2023.2.55 182 10/20/2023
2023.2.54 205 10/20/2023
2023.2.53 460 10/19/2023
2023.2.52 293 10/18/2023
2023.2.51 180 10/18/2023
2023.2.50 236 10/17/2023
2023.2.49 1,251 10/12/2023
2023.2.48 371 10/12/2023
2023.2.47 364 10/11/2023
2023.2.46 178 10/11/2023
2023.2.45 361 10/11/2023
2023.2.44 208 10/11/2023
2023.2.43 313 9/25/2023
2023.2.42 207 9/20/2023
2023.2.41 2,158 9/11/2023
2023.2.40 464 8/30/2023
2023.2.39 403 8/25/2023
2023.2.38 440 8/22/2023
2023.2.37 328 8/21/2023
2023.2.36 2,339 8/18/2023
2023.2.35 232 8/18/2023
2023.2.34 239 8/9/2023
2023.2.33 271 7/29/2023
2023.2.32 1,161 7/26/2023
2023.2.31 230 7/25/2023
2023.2.30 267 7/25/2023
2023.2.29 307 7/23/2023
2023.2.28 253 7/23/2023
2023.2.27 283 7/21/2023
2023.2.26 484 7/19/2023
2023.2.25 256 7/19/2023
2023.2.24 1,391 6/27/2023
2023.2.23 384 6/26/2023
2023.2.22 508 6/25/2023
2023.2.21 247 6/24/2023
2023.2.20 235 6/23/2023
2023.2.19 245 6/23/2023
2023.2.18 258 6/23/2023
2023.2.17 274 6/22/2023
2023.2.16 346 6/22/2023
2023.2.15 250 6/22/2023
2023.2.14 280 6/21/2023
2023.2.13 274 6/16/2023
2023.2.12 251 6/15/2023
2023.2.11 681 6/13/2023
2023.2.10 254 6/12/2023
2023.2.9 274 6/12/2023
2023.2.8 266 6/12/2023
2023.2.7 358 6/10/2023
2023.2.6-preview 233 6/10/2023
2023.2.5-preview 193 6/9/2023
2023.2.4-preview 292 6/9/2023
2023.2.3-preview 226 6/7/2023
2023.2.2-preview 260 6/2/2023
2023.2.1-preview 239 6/2/2023
2023.1.28-preview 141 9/5/2024
2023.1.27-preview 119 9/5/2024
2023.1.26-preview 172 9/4/2024
2023.1.25-preview 130 9/4/2024
2023.1.24-preview 116 9/4/2024
2023.1.23-preview 134 9/4/2024
2023.1.22-preview 139 9/3/2024
2023.1.21-preview 140 9/3/2024
2023.1.20-preview 148 9/3/2024
2023.1.19-preview 138 9/2/2024
2023.1.18-preview 140 9/2/2024
2023.1.17-preview 122 9/2/2024
2023.1.16-preview 132 8/30/2024
2023.1.15-preview 145 8/29/2024
2023.1.14-preview 255 5/24/2023
2023.1.13-preview 945 5/24/2023
2023.1.12-preview 247 5/23/2023
2023.1.11-preview 223 5/23/2023
2023.1.10-preview 197 5/17/2023
2023.1.9-preview 232 5/17/2023
2023.1.8-preview 189 5/15/2023
2023.1.7-preview 484 5/10/2023
2023.1.6-preview 294 4/27/2023
2023.1.5-preview 264 4/26/2023
2023.1.4-preview 203 4/26/2023
2023.1.3-preview 311 4/21/2023
2023.1.2-preview 214 4/21/2023
2023.1.1-preview 216 4/21/2023
2023.1.0-preview 213 4/21/2023
2023.0.150 263 5/29/2023
2023.0.149 555 5/24/2023
2023.0.148 277 5/23/2023
2023.0.147 308 5/17/2023
2023.0.146 339 5/17/2023
2023.0.145 251 5/9/2023
2023.0.144 500 5/2/2023
2023.0.143 443 5/2/2023
1.0.142-preview 235 4/24/2023
1.0.141-preview 300 4/5/2023
1.0.140-preview 314 4/4/2023
1.0.139-preview 311 3/30/2023
1.0.138-preview 287 3/30/2023
1.0.137-preview 199 3/30/2023
1.0.136-preview 213 3/30/2023
1.0.135-preview 824 3/30/2023
1.0.134-preview 370 3/1/2023
1.0.133-preview 228 3/1/2023
1.0.132-preview 630 2/27/2023
1.0.131-preview 479 2/24/2023
1.0.130-preview 930 2/22/2023
1.0.129-preview 220 2/22/2023
1.0.128-preview 278 2/21/2023
1.0.127-preview 217 2/17/2023
1.0.126-preview 697 2/16/2023
1.0.125-preview 256 2/16/2023
1.0.124-preview 228 2/15/2023
1.0.123-preview 210 2/15/2023
1.0.122-preview 240 2/10/2023
1.0.121-preview 200 2/10/2023
1.0.120-preview 203 2/10/2023
1.0.119-preview 261 2/9/2023
1.0.118-preview 248 2/8/2023
1.0.117-preview 256 1/30/2023
1.0.116-preview 217 1/26/2023
1.0.115-preview 220 1/26/2023
1.0.114-preview 869 1/16/2023
1.0.113-preview 283 1/13/2023
1.0.112-preview 424 1/8/2023
1.0.111-preview 538 1/5/2023
1.0.110-preview 744 12/18/2022
1.0.109-preview 260 12/15/2022
1.0.108-preview 251 12/13/2022
1.0.107-preview 271 12/9/2022
1.0.107-alpha.2 184 12/9/2022
1.0.107-alpha.1 174 12/9/2022
1.0.106-preview 274 12/8/2022
1.0.105-preview 233 12/8/2022
1.0.105-alpha.2 189 12/8/2022
1.0.105-alpha.1 176 12/6/2022
1.0.104-preview 289 12/5/2022
1.0.103-preview 350 12/2/2022
1.0.102-preview 527 11/18/2022
1.0.101-preview 1,244 11/3/2022
1.0.101-alpha.3 201 11/3/2022
1.0.101-alpha.2 216 11/2/2022
1.0.101-alpha.1 172 11/2/2022
1.0.100-preview 1,093 10/28/2022
1.0.99-preview 483 10/27/2022
1.0.99-alpha.3 190 10/27/2022
1.0.99-alpha.2 204 10/26/2022
1.0.99-alpha.1 179 10/26/2022
1.0.98-preview 323 10/25/2022
1.0.97-preview 531 10/20/2022
1.0.97-alpha.2 235 10/19/2022
1.0.97-alpha.1 227 10/19/2022
1.0.96-preview 483 10/7/2022
1.0.95-preview 241 10/4/2022
1.0.94-preview 640 9/29/2022
1.0.93-preview 247 9/29/2022
1.0.92-preview 274 9/27/2022
1.0.91-preview 335 9/27/2022
1.0.90-preview 284 9/27/2022
1.0.90-alpha.1 208 9/26/2022
1.0.89-preview 507 9/11/2022
1.0.87-preview 725 9/6/2022
1.0.86-preview 474 9/5/2022
1.0.86-alpha.1 187 9/2/2022
1.0.85-preview 409 8/2/2022
1.0.84-preview 429 7/29/2022
1.0.83-preview 499 7/28/2022
1.0.83-alpha.3 210 7/28/2022
1.0.83-alpha.2 205 7/28/2022
1.0.83-alpha.1 207 7/28/2022
1.0.82-preview 710 7/27/2022
1.0.82-beta.3 249 7/27/2022
1.0.82-beta.2 247 7/26/2022
1.0.82-beta 265 7/26/2022
1.0.82-alpha.1 194 7/25/2022
1.0.81-preview 323 7/22/2022
1.0.80-preview 287 7/20/2022
1.0.80-alpha.3 217 7/20/2022
1.0.80-alpha.2 208 7/20/2022
1.0.80-alpha 266 7/20/2022
1.0.79-preview 387 7/19/2022
1.0.79-beta 244 7/15/2022
1.0.79-alpha.1 318 7/2/2022
1.0.78-preview 382 7/12/2022
1.0.78-alpha.1 222 7/2/2022
1.0.77-preview 331 6/24/2022
1.0.76-preview 296 6/22/2022
1.0.75-preview 335 6/21/2022
1.0.74-preview 283 6/18/2022
1.0.73-preview 232 6/16/2022
1.0.72-preview 276 6/15/2022
1.0.71-preview 284 6/10/2022
1.0.70-preview 924 6/6/2022
1.0.70-beta 294 6/3/2022
1.0.69-preview 301 5/24/2022
1.0.68-preview 397 5/23/2022
1.0.68-beta-4 245 5/23/2022
1.0.68-beta-3 278 5/16/2022
1.0.68-beta-2 263 5/16/2022
1.0.68-beta 265 5/12/2022
1.0.67-preview 344 5/11/2022
1.0.67-beta-4 258 5/11/2022
1.0.67-beta-3 278 5/10/2022
1.0.67-beta-2 256 5/10/2022
1.0.67-beta 261 5/10/2022
1.0.66-preview 276 5/9/2022
1.0.65-preview 267 5/4/2022
1.0.65-beta 262 4/29/2022
1.0.64-preview 289 4/26/2022
1.0.63-preview 282 4/22/2022
1.0.63-beta-6 288 4/21/2022
1.0.63-beta-5 262 4/21/2022
1.0.63-beta-4 275 4/21/2022
1.0.63-beta-3 282 4/20/2022
1.0.63-beta-2 275 4/20/2022
1.0.63-beta 278 4/19/2022
1.0.62-preview 287 4/15/2022
1.0.62-beta-6 263 4/14/2022
1.0.62-beta-5 268 4/14/2022
1.0.62-beta-4 273 4/14/2022
1.0.62-beta-3 286 4/13/2022
1.0.62-beta-2 272 4/11/2022
1.0.62-beta 284 4/11/2022
1.0.61-preview 313 4/7/2022
1.0.61-beta 286 4/7/2022
1.0.60-preview 287 4/6/2022
1.0.59-preview 278 4/6/2022
1.0.59-beta 293 4/6/2022
1.0.58-beta-6 265 4/6/2022
1.0.58-beta-5 276 4/5/2022
1.0.58-beta-4 279 4/5/2022
1.0.58-beta-3 247 4/5/2022
1.0.58-beta-2 286 4/5/2022
1.0.58-beta 287 4/5/2022
1.0.56-preview 291 4/1/2022
1.0.56-beta-9 279 3/28/2022
1.0.56-beta-8 281 3/28/2022
1.0.56-beta-7 267 3/28/2022
1.0.56-beta-6 297 3/28/2022
1.0.56-beta-5 258 3/25/2022
1.0.56-beta-4 268 3/24/2022
1.0.56-beta-3 279 3/22/2022
1.0.56-beta-2 268 3/22/2022
1.0.56-beta-14 279 3/29/2022
1.0.56-beta-13 290 3/28/2022
1.0.56-beta-12 263 3/28/2022
1.0.56-beta-11 277 3/28/2022
1.0.56-beta-10 276 3/28/2022
1.0.56-beta 263 3/22/2022
1.0.55-preview 306 3/22/2022
1.0.54-preview 279 3/16/2022
1.0.53-preview 274 3/16/2022
1.0.52-preview 296 3/16/2022
1.0.51-preview 275 3/15/2022
1.0.50-preview 273 3/9/2022
1.0.49-preview 279 3/3/2022
1.0.48-preview 270 2/23/2022
1.0.47-preview 297 2/21/2022
1.0.46-preview 400 2/21/2022
1.0.45-preview 257 2/18/2022
1.0.43-preview 288 2/16/2022
1.0.42-preview 304 2/10/2022
1.0.41-preview 272 2/10/2022
1.0.40-preview 278 2/10/2022
1.0.39-preview 298 2/7/2022
1.0.38-preview 313 2/4/2022
1.0.37-preview 279 2/4/2022
1.0.36-preview 308 1/25/2022
1.0.35-preview 294 1/25/2022
1.0.34-preview 271 1/25/2022
1.0.33-preview 284 1/13/2022
1.0.32-preview 329 1/13/2022
1.0.31-preview 293 1/13/2022
1.0.30-preview 291 1/13/2022
1.0.29-preview 287 1/13/2022
1.0.28-preview 284 1/12/2022
1.0.27-preview 271 1/12/2022
1.0.26-preview 302 1/12/2022
1.0.25-preview 309 1/10/2022
1.0.24-preview 299 1/6/2022
1.0.23-preview 310 1/4/2022
1.0.22-preview 283 12/15/2021
1.0.21-preview 376 12/14/2021
1.0.20-preview 375 12/14/2021
1.0.19-preview 304 12/10/2021
1.0.18-preview 326 12/9/2021
1.0.17-preview 530 12/9/2021
1.0.16-preview 287 12/9/2021
1.0.15-preview 317 12/9/2021
1.0.14-preview 325 12/9/2021
1.0.13-preview 317 12/9/2021
1.0.12-preview 307 12/9/2021
1.0.10-preview 315 12/8/2021
1.0.9-preview 331 12/7/2021
1.0.8-preview 285 12/7/2021
1.0.7-preview 313 12/7/2021
1.0.6-preview 319 12/7/2021
1.0.4-preview 285 12/3/2021
1.0.3-preview 287 12/3/2021
1.0.2-preview 295 12/3/2021
1.0.1-preview 299 12/2/2021
1.0.0-preview 308 12/2/2021