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.292 0 12/23/2025
2023.2.291 0 12/23/2025
2023.2.290 183 12/19/2025
2023.2.289 194 12/19/2025
2023.2.288 246 12/18/2025
2023.2.287 242 12/18/2025
2023.2.286 239 12/18/2025
2023.2.285 255 12/17/2025
2023.2.284 250 12/16/2025
2023.2.283 223 12/15/2025
2023.2.282 218 12/15/2025
2023.2.281 198 12/14/2025
2023.2.280 178 12/14/2025
2023.2.279 143 12/12/2025
2023.2.278 428 12/11/2025
2023.2.277 151 12/6/2025
2023.2.276 886 12/2/2025
2023.2.275 692 11/5/2025
2023.2.274 214 11/3/2025
2023.2.273 210 10/31/2025
2023.2.272 214 10/30/2025
2023.2.271 463 10/29/2025
2023.2.270 446 10/14/2025
2023.2.269 246 10/14/2025
2023.2.268 312 10/13/2025
2023.2.267 172 10/11/2025
2023.2.266 205 10/8/2025
2023.2.265 194 10/8/2025
2023.2.264 206 10/7/2025
2023.2.263 211 10/7/2025
2023.2.262 208 10/7/2025
2023.2.261 192 10/7/2025
2023.2.260 199 10/6/2025
2023.2.259 204 10/3/2025
2023.2.258 158 10/3/2025
2023.2.257 212 10/3/2025
2023.2.256 212 10/3/2025
2023.2.255 170 10/3/2025
2023.2.254 233 10/2/2025
2023.2.253 201 10/2/2025
2023.2.252 215 10/1/2025
2023.2.251 639 10/1/2025
2023.2.250 251 10/1/2025
2023.2.249 285 9/30/2025
2023.2.248 211 9/30/2025
2023.2.247 209 9/30/2025
2023.2.246 248 9/30/2025
2023.2.245 213 9/30/2025
2023.2.244 200 9/30/2025
2023.2.243 213 9/30/2025
2023.2.242 233 9/30/2025
2023.2.241 209 9/29/2025
2023.2.240 210 9/29/2025
2023.2.239 219 9/29/2025
2023.2.238 233 9/29/2025
2023.2.237 591 9/29/2025
2023.2.236 841 9/29/2025
2023.2.235 248 9/28/2025
2023.2.234 262 9/28/2025
2023.2.233 183 9/28/2025
2023.2.232 174 9/28/2025
2023.2.231 183 9/28/2025
2023.2.230 183 9/28/2025
2023.2.229 179 9/28/2025
2023.2.228 195 9/28/2025
2023.2.227 134 9/27/2025
2023.2.226 145 9/27/2025
2023.2.225 165 9/27/2025
2023.2.224 147 9/27/2025
2023.2.223 142 9/27/2025
2023.2.222 151 9/27/2025
2023.2.221 149 9/27/2025
2023.2.220 129 9/27/2025
2023.2.219 167 9/26/2025
2023.2.218 172 9/26/2025
2023.2.217 155 9/26/2025
2023.2.216 193 9/26/2025
2023.2.215 181 9/26/2025
2023.2.214 175 9/26/2025
2023.2.213 215 9/25/2025
2023.2.212 219 9/25/2025
2023.2.211 219 9/24/2025
2023.2.210 211 9/24/2025
2023.2.209 212 9/24/2025
2023.2.208 217 9/24/2025
2023.2.207 223 9/23/2025
2023.2.206 214 9/23/2025
2023.2.205 253 9/22/2025
2023.2.204 219 9/22/2025
2023.2.203 236 9/22/2025
2023.2.202 244 9/22/2025
2023.2.201 266 9/21/2025
2023.2.200 242 9/21/2025
2023.2.199 197 9/21/2025
2023.2.198 241 9/20/2025
2023.2.197 210 9/20/2025
2023.2.196 230 9/20/2025
2023.2.195 263 9/19/2025
2023.2.194 281 9/19/2025
2023.2.193 269 9/19/2025
2023.2.192 284 9/19/2025
2023.2.191 345 9/18/2025
2023.2.190 334 9/18/2025
2023.2.189 330 9/17/2025
2023.2.188 319 9/17/2025
2023.2.187 340 9/17/2025
2023.2.186 318 9/16/2025
2023.2.185 326 9/16/2025
2023.2.184 324 9/15/2025
2023.2.183 323 9/15/2025
2023.2.182 276 9/15/2025
2023.2.181 287 9/15/2025
2023.2.180 264 9/15/2025
2023.2.179 196 9/10/2025
2023.2.178 475 9/2/2025
2023.2.177 187 9/2/2025
2023.2.176 235 9/2/2025
2023.2.175 204 9/2/2025
2023.2.174 191 9/2/2025
2023.2.173 227 9/1/2025
2023.2.172 200 9/1/2025
2023.2.171 146 7/19/2025
2023.2.170 499 5/18/2025
2023.2.169 1,326 5/16/2025
2023.2.168 299 5/8/2025
2023.2.167 276 4/28/2025
2023.2.166 333 4/23/2025
2023.2.165 225 4/13/2025
2023.2.164 364 4/12/2025
2023.2.163 232 4/12/2025
2023.2.162 505 3/28/2025
2023.2.161 212 3/28/2025
2023.2.160 846 3/14/2025
2023.2.159 690 3/1/2025
2023.2.158 211 2/27/2025
2023.2.157 1,111 2/10/2025
2023.2.156 534 2/5/2025
2023.2.155 181 2/3/2025
2023.2.154 217 1/10/2025
2023.2.153 257 1/10/2025
2023.2.152 1,132 12/12/2024
2023.2.151 194 11/22/2024
2023.2.150 399 11/22/2024
2023.2.149 201 11/21/2024
2023.2.148 211 11/20/2024
2023.2.147 640 11/19/2024
2023.2.146 211 11/15/2024
2023.2.145 210 11/12/2024
2023.2.144 231 11/12/2024
2023.2.143 207 11/11/2024
2023.2.142 535 11/7/2024
2023.2.141 386 11/7/2024
2023.2.140 2,328 11/6/2024
2023.2.139 386 11/6/2024
2023.2.138 204 11/5/2024
2023.2.137 503 10/24/2024
2023.2.136 3,151 10/14/2024
2023.2.135 1,007 10/4/2024
2023.2.134 252 9/29/2024
2023.2.133 207 9/25/2024
2023.2.132 295 9/24/2024
2023.2.131 189 9/24/2024
2023.2.130 388 9/11/2024
2023.2.129 2,471 9/11/2024
2023.2.128 228 9/11/2024
2023.2.127 203 9/10/2024
2023.2.126 366 9/9/2024
2023.2.125 221 9/9/2024
2023.2.124 478 9/6/2024
2023.2.123 260 8/29/2024
2023.2.122 1,191 8/28/2024
2023.2.121 191 8/27/2024
2023.2.120 202 8/27/2024
2023.2.119 501 8/27/2024
2023.2.118 205 8/27/2024
2023.2.117 245 8/27/2024
2023.2.116 564 8/9/2024
2023.2.115 381 8/5/2024
2023.2.114 213 8/5/2024
2023.2.113 415 7/25/2024
2023.2.112 347 7/12/2024
2023.2.111 2,335 7/12/2024
2023.2.110 545 7/10/2024
2023.2.109 1,972 6/10/2024
2023.2.108 408 5/30/2024
2023.2.107 240 5/28/2024
2023.2.106 521 5/27/2024
2023.2.105 197 5/24/2024
2023.2.104 236 5/23/2024
2023.2.103 208 5/23/2024
2023.2.102 284 5/23/2024
2023.2.101 197 5/23/2024
2023.2.100 233 5/22/2024
2023.2.99 214 5/22/2024
2023.2.98 419 5/22/2024
2023.2.97 193 5/22/2024
2023.2.96 248 5/22/2024
2023.2.95 234 5/21/2024
2023.2.94 196 5/21/2024
2023.2.93 358 5/19/2024
2023.2.92 224 5/19/2024
2023.2.91 258 5/18/2024
2023.2.90 483 5/15/2024
2023.2.89 277 5/15/2024
2023.2.88 221 5/15/2024
2023.2.87 208 5/13/2024
2023.2.86 1,074 4/29/2024
2023.2.85 526 4/23/2024
2023.2.84 813 4/2/2024
2023.2.83 4,320 3/28/2024
2023.2.82 224 3/26/2024
2023.2.81 199 3/23/2024
2023.2.80 481 3/22/2024
2023.2.79 227 3/13/2024
2023.2.78 614 2/12/2024
2023.2.77 270 1/10/2024
2023.2.76 984 1/8/2024
2023.2.75 388 1/8/2024
2023.2.74 241 1/5/2024
2023.2.73 218 1/5/2024
2023.2.72 219 1/5/2024
2023.2.71 552 1/3/2024
2023.2.70 3,464 1/2/2024
2023.2.69 204 12/22/2023
2023.2.68 576 12/21/2023
2023.2.67 223 12/19/2023
2023.2.66 224 12/18/2023
2023.2.65 225 12/18/2023
2023.2.64 926 12/12/2023
2023.2.63 308 12/1/2023
2023.2.62 552 12/1/2023
2023.2.61 278 11/30/2023
2023.2.60 229 11/30/2023
2023.2.59 203 11/30/2023
2023.2.58 455 11/13/2023
2023.2.57 551 10/25/2023
2023.2.56 1,320 10/23/2023
2023.2.55 234 10/20/2023
2023.2.54 235 10/20/2023
2023.2.53 498 10/19/2023
2023.2.52 342 10/18/2023
2023.2.51 203 10/18/2023
2023.2.50 276 10/17/2023
2023.2.49 1,292 10/12/2023
2023.2.48 405 10/12/2023
2023.2.47 394 10/11/2023
2023.2.46 223 10/11/2023
2023.2.45 393 10/11/2023
2023.2.44 249 10/11/2023
2023.2.43 373 9/25/2023
2023.2.42 261 9/20/2023
2023.2.41 2,205 9/11/2023
2023.2.40 497 8/30/2023
2023.2.39 463 8/25/2023
2023.2.38 467 8/22/2023
2023.2.37 364 8/21/2023
2023.2.36 2,386 8/18/2023
2023.2.35 280 8/18/2023
2023.2.34 288 8/9/2023
2023.2.33 312 7/29/2023
2023.2.32 1,188 7/26/2023
2023.2.31 269 7/25/2023
2023.2.30 314 7/25/2023
2023.2.29 358 7/23/2023
2023.2.28 292 7/23/2023
2023.2.27 310 7/21/2023
2023.2.26 524 7/19/2023
2023.2.25 318 7/19/2023
2023.2.24 1,448 6/27/2023
2023.2.23 420 6/26/2023
2023.2.22 538 6/25/2023
2023.2.21 280 6/24/2023
2023.2.20 303 6/23/2023
2023.2.19 295 6/23/2023
2023.2.18 305 6/23/2023
2023.2.17 302 6/22/2023
2023.2.16 391 6/22/2023
2023.2.15 313 6/22/2023
2023.2.14 320 6/21/2023
2023.2.13 318 6/16/2023
2023.2.12 307 6/15/2023
2023.2.11 737 6/13/2023
2023.2.10 296 6/12/2023
2023.2.9 311 6/12/2023
2023.2.8 306 6/12/2023
2023.2.7 407 6/10/2023
2023.2.6-preview 280 6/10/2023
2023.2.5-preview 230 6/9/2023
2023.2.4-preview 338 6/9/2023
2023.2.3-preview 285 6/7/2023
2023.2.2-preview 310 6/2/2023
2023.2.1-preview 295 6/2/2023
2023.1.28-preview 180 9/5/2024
2023.1.27-preview 163 9/5/2024
2023.1.26-preview 216 9/4/2024
2023.1.25-preview 171 9/4/2024
2023.1.24-preview 155 9/4/2024
2023.1.23-preview 189 9/4/2024
2023.1.22-preview 169 9/3/2024
2023.1.21-preview 180 9/3/2024
2023.1.20-preview 200 9/3/2024
2023.1.19-preview 181 9/2/2024
2023.1.18-preview 194 9/2/2024
2023.1.17-preview 168 9/2/2024
2023.1.16-preview 171 8/30/2024
2023.1.15-preview 197 8/29/2024
2023.1.14-preview 322 5/24/2023
2023.1.13-preview 991 5/24/2023
2023.1.12-preview 294 5/23/2023
2023.1.11-preview 269 5/23/2023
2023.1.10-preview 251 5/17/2023
2023.1.9-preview 301 5/17/2023
2023.1.8-preview 239 5/15/2023
2023.1.7-preview 532 5/10/2023
2023.1.6-preview 344 4/27/2023
2023.1.5-preview 318 4/26/2023
2023.1.4-preview 256 4/26/2023
2023.1.3-preview 353 4/21/2023
2023.1.2-preview 282 4/21/2023
2023.1.1-preview 268 4/21/2023
2023.1.0-preview 255 4/21/2023
2023.0.150 313 5/29/2023
2023.0.149 605 5/24/2023
2023.0.148 343 5/23/2023
2023.0.147 359 5/17/2023
2023.0.146 391 5/17/2023
2023.0.145 303 5/9/2023
2023.0.144 549 5/2/2023
2023.0.143 548 5/2/2023
1.0.142-preview 284 4/24/2023
1.0.141-preview 356 4/5/2023
1.0.140-preview 379 4/4/2023
1.0.139-preview 363 3/30/2023
1.0.138-preview 338 3/30/2023
1.0.137-preview 257 3/30/2023
1.0.136-preview 273 3/30/2023
1.0.135-preview 861 3/30/2023
1.0.134-preview 430 3/1/2023
1.0.133-preview 296 3/1/2023
1.0.132-preview 697 2/27/2023
1.0.131-preview 529 2/24/2023
1.0.130-preview 988 2/22/2023
1.0.129-preview 279 2/22/2023
1.0.128-preview 323 2/21/2023
1.0.127-preview 267 2/17/2023
1.0.126-preview 764 2/16/2023
1.0.125-preview 307 2/16/2023
1.0.124-preview 281 2/15/2023
1.0.123-preview 285 2/15/2023
1.0.122-preview 281 2/10/2023
1.0.121-preview 248 2/10/2023
1.0.120-preview 255 2/10/2023
1.0.119-preview 325 2/9/2023
1.0.118-preview 290 2/8/2023
1.0.117-preview 314 1/30/2023
1.0.116-preview 286 1/26/2023
1.0.115-preview 284 1/26/2023
1.0.114-preview 948 1/16/2023
1.0.113-preview 337 1/13/2023
1.0.112-preview 481 1/8/2023
1.0.111-preview 588 1/5/2023
1.0.110-preview 794 12/18/2022
1.0.109-preview 311 12/15/2022
1.0.108-preview 305 12/13/2022
1.0.107-preview 336 12/9/2022
1.0.107-alpha.2 219 12/9/2022
1.0.107-alpha.1 207 12/9/2022
1.0.106-preview 329 12/8/2022
1.0.105-preview 289 12/8/2022
1.0.105-alpha.2 240 12/8/2022
1.0.105-alpha.1 216 12/6/2022
1.0.104-preview 347 12/5/2022
1.0.103-preview 419 12/2/2022
1.0.102-preview 576 11/18/2022
1.0.101-preview 1,314 11/3/2022
1.0.101-alpha.3 235 11/3/2022
1.0.101-alpha.2 262 11/2/2022
1.0.101-alpha.1 207 11/2/2022
1.0.100-preview 1,150 10/28/2022
1.0.99-preview 550 10/27/2022
1.0.99-alpha.3 232 10/27/2022
1.0.99-alpha.2 234 10/26/2022
1.0.99-alpha.1 213 10/26/2022
1.0.98-preview 379 10/25/2022
1.0.97-preview 590 10/20/2022
1.0.97-alpha.2 265 10/19/2022
1.0.97-alpha.1 263 10/19/2022
1.0.96-preview 537 10/7/2022
1.0.95-preview 294 10/4/2022
1.0.94-preview 709 9/29/2022
1.0.93-preview 324 9/29/2022
1.0.92-preview 321 9/27/2022
1.0.91-preview 396 9/27/2022
1.0.90-preview 344 9/27/2022
1.0.90-alpha.1 243 9/26/2022
1.0.89-preview 552 9/11/2022
1.0.87-preview 777 9/6/2022
1.0.86-preview 516 9/5/2022
1.0.86-alpha.1 223 9/2/2022
1.0.85-preview 473 8/2/2022
1.0.84-preview 484 7/29/2022
1.0.83-preview 560 7/28/2022
1.0.83-alpha.3 257 7/28/2022
1.0.83-alpha.2 246 7/28/2022
1.0.83-alpha.1 260 7/28/2022
1.0.82-preview 780 7/27/2022
1.0.82-beta.3 285 7/27/2022
1.0.82-beta.2 284 7/26/2022
1.0.82-beta 333 7/26/2022
1.0.82-alpha.1 235 7/25/2022
1.0.81-preview 379 7/22/2022
1.0.80-preview 359 7/20/2022
1.0.80-alpha.3 270 7/20/2022
1.0.80-alpha.2 241 7/20/2022
1.0.80-alpha 335 7/20/2022
1.0.79-preview 449 7/19/2022
1.0.79-beta 314 7/15/2022
1.0.79-alpha.1 358 7/2/2022
1.0.78-preview 426 7/12/2022
1.0.78-alpha.1 281 7/2/2022
1.0.77-preview 397 6/24/2022
1.0.76-preview 363 6/22/2022
1.0.75-preview 412 6/21/2022
1.0.74-preview 333 6/18/2022
1.0.73-preview 281 6/16/2022
1.0.72-preview 323 6/15/2022
1.0.71-preview 348 6/10/2022
1.0.70-preview 984 6/6/2022
1.0.70-beta 354 6/3/2022
1.0.69-preview 360 5/24/2022
1.0.68-preview 460 5/23/2022
1.0.68-beta-4 303 5/23/2022
1.0.68-beta-3 347 5/16/2022
1.0.68-beta-2 321 5/16/2022
1.0.68-beta 332 5/12/2022
1.0.67-preview 419 5/11/2022
1.0.67-beta-4 317 5/11/2022
1.0.67-beta-3 330 5/10/2022
1.0.67-beta-2 303 5/10/2022
1.0.67-beta 320 5/10/2022
1.0.66-preview 322 5/9/2022
1.0.65-preview 323 5/4/2022
1.0.65-beta 320 4/29/2022
1.0.64-preview 333 4/26/2022
1.0.63-preview 341 4/22/2022
1.0.63-beta-6 357 4/21/2022
1.0.63-beta-5 316 4/21/2022
1.0.63-beta-4 342 4/21/2022
1.0.63-beta-3 353 4/20/2022
1.0.63-beta-2 329 4/20/2022
1.0.63-beta 325 4/19/2022
1.0.62-preview 362 4/15/2022
1.0.62-beta-6 311 4/14/2022
1.0.62-beta-5 324 4/14/2022
1.0.62-beta-4 330 4/14/2022
1.0.62-beta-3 349 4/13/2022
1.0.62-beta-2 334 4/11/2022
1.0.62-beta 334 4/11/2022
1.0.61-preview 379 4/7/2022
1.0.61-beta 343 4/7/2022
1.0.60-preview 365 4/6/2022
1.0.59-preview 349 4/6/2022
1.0.59-beta 364 4/6/2022
1.0.58-beta-6 322 4/6/2022
1.0.58-beta-5 348 4/5/2022
1.0.58-beta-4 337 4/5/2022
1.0.58-beta-3 305 4/5/2022
1.0.58-beta-2 340 4/5/2022
1.0.58-beta 344 4/5/2022
1.0.56-preview 350 4/1/2022
1.0.56-beta-9 342 3/28/2022
1.0.56-beta-8 340 3/28/2022
1.0.56-beta-7 324 3/28/2022
1.0.56-beta-6 364 3/28/2022
1.0.56-beta-5 313 3/25/2022
1.0.56-beta-4 328 3/24/2022
1.0.56-beta-3 341 3/22/2022
1.0.56-beta-2 333 3/22/2022
1.0.56-beta-14 325 3/29/2022
1.0.56-beta-13 359 3/28/2022
1.0.56-beta-12 319 3/28/2022
1.0.56-beta-11 347 3/28/2022
1.0.56-beta-10 342 3/28/2022
1.0.56-beta 337 3/22/2022
1.0.55-preview 361 3/22/2022
1.0.54-preview 354 3/16/2022
1.0.53-preview 334 3/16/2022
1.0.52-preview 362 3/16/2022
1.0.51-preview 335 3/15/2022
1.0.50-preview 353 3/9/2022
1.0.49-preview 335 3/3/2022
1.0.48-preview 329 2/23/2022
1.0.47-preview 367 2/21/2022
1.0.46-preview 461 2/21/2022
1.0.45-preview 313 2/18/2022
1.0.43-preview 353 2/16/2022
1.0.42-preview 391 2/10/2022
1.0.41-preview 346 2/10/2022
1.0.40-preview 339 2/10/2022
1.0.39-preview 357 2/7/2022
1.0.38-preview 361 2/4/2022
1.0.37-preview 342 2/4/2022
1.0.36-preview 386 1/25/2022
1.0.35-preview 356 1/25/2022
1.0.34-preview 330 1/25/2022
1.0.33-preview 347 1/13/2022
1.0.32-preview 398 1/13/2022
1.0.31-preview 355 1/13/2022
1.0.30-preview 352 1/13/2022
1.0.29-preview 344 1/13/2022
1.0.28-preview 349 1/12/2022
1.0.27-preview 332 1/12/2022
1.0.26-preview 364 1/12/2022
1.0.25-preview 381 1/10/2022
1.0.24-preview 354 1/6/2022
1.0.23-preview 380 1/4/2022
1.0.22-preview 322 12/15/2021
1.0.21-preview 433 12/14/2021
1.0.20-preview 436 12/14/2021
1.0.19-preview 379 12/10/2021
1.0.18-preview 403 12/9/2021
1.0.17-preview 602 12/9/2021
1.0.16-preview 347 12/9/2021
1.0.15-preview 382 12/9/2021
1.0.14-preview 405 12/9/2021
1.0.13-preview 382 12/9/2021
1.0.12-preview 367 12/9/2021
1.0.10-preview 362 12/8/2021
1.0.9-preview 398 12/7/2021
1.0.8-preview 346 12/7/2021
1.0.7-preview 370 12/7/2021
1.0.6-preview 379 12/7/2021
1.0.4-preview 354 12/3/2021
1.0.3-preview 337 12/3/2021
1.0.2-preview 356 12/3/2021
1.0.1-preview 384 12/2/2021
1.0.0-preview 388 12/2/2021