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.307 89 1/12/2026
2023.2.306 99 1/9/2026
2023.2.305 67 1/7/2026
2023.2.304 69 1/6/2026
2023.2.303 71 1/5/2026
2023.2.302 70 1/5/2026
2023.2.301 56 1/5/2026
2023.2.300 63 1/5/2026
2023.2.299 85 1/5/2026
2023.2.298 71 1/3/2026
2023.2.297 66 1/3/2026
2023.2.296 79 1/2/2026
2023.2.295 100 12/31/2025
2023.2.294 77 12/31/2025
2023.2.293 74 12/31/2025
2023.2.292 196 12/23/2025
2023.2.291 165 12/23/2025
2023.2.290 207 12/19/2025
2023.2.289 202 12/19/2025
2023.2.288 256 12/18/2025
2023.2.287 253 12/18/2025
2023.2.286 257 12/18/2025
2023.2.285 263 12/17/2025
2023.2.284 257 12/16/2025
2023.2.283 228 12/15/2025
2023.2.282 223 12/15/2025
2023.2.281 207 12/14/2025
2023.2.280 192 12/14/2025
2023.2.279 159 12/12/2025
2023.2.278 441 12/11/2025
2023.2.277 166 12/6/2025
2023.2.276 900 12/2/2025
2023.2.275 709 11/5/2025
2023.2.274 227 11/3/2025
2023.2.273 223 10/31/2025
2023.2.272 228 10/30/2025
2023.2.271 493 10/29/2025
2023.2.270 466 10/14/2025
2023.2.269 263 10/14/2025
2023.2.268 322 10/13/2025
2023.2.267 184 10/11/2025
2023.2.266 215 10/8/2025
2023.2.265 206 10/8/2025
2023.2.264 215 10/7/2025
2023.2.263 218 10/7/2025
2023.2.262 220 10/7/2025
2023.2.261 206 10/7/2025
2023.2.260 207 10/6/2025
2023.2.259 217 10/3/2025
2023.2.258 166 10/3/2025
2023.2.257 224 10/3/2025
2023.2.256 225 10/3/2025
2023.2.255 182 10/3/2025
2023.2.254 242 10/2/2025
2023.2.253 208 10/2/2025
2023.2.252 223 10/1/2025
2023.2.251 654 10/1/2025
2023.2.250 255 10/1/2025
2023.2.249 295 9/30/2025
2023.2.248 221 9/30/2025
2023.2.247 215 9/30/2025
2023.2.246 258 9/30/2025
2023.2.245 222 9/30/2025
2023.2.244 214 9/30/2025
2023.2.243 226 9/30/2025
2023.2.242 242 9/30/2025
2023.2.241 216 9/29/2025
2023.2.240 224 9/29/2025
2023.2.239 225 9/29/2025
2023.2.238 249 9/29/2025
2023.2.237 602 9/29/2025
2023.2.236 852 9/29/2025
2023.2.235 258 9/28/2025
2023.2.234 268 9/28/2025
2023.2.233 193 9/28/2025
2023.2.232 186 9/28/2025
2023.2.231 197 9/28/2025
2023.2.230 196 9/28/2025
2023.2.229 186 9/28/2025
2023.2.228 205 9/28/2025
2023.2.227 146 9/27/2025
2023.2.226 150 9/27/2025
2023.2.225 181 9/27/2025
2023.2.224 152 9/27/2025
2023.2.223 148 9/27/2025
2023.2.222 162 9/27/2025
2023.2.221 160 9/27/2025
2023.2.220 140 9/27/2025
2023.2.219 179 9/26/2025
2023.2.218 178 9/26/2025
2023.2.217 164 9/26/2025
2023.2.216 207 9/26/2025
2023.2.215 194 9/26/2025
2023.2.214 188 9/26/2025
2023.2.213 224 9/25/2025
2023.2.212 230 9/25/2025
2023.2.211 230 9/24/2025
2023.2.210 219 9/24/2025
2023.2.209 226 9/24/2025
2023.2.208 228 9/24/2025
2023.2.207 232 9/23/2025
2023.2.206 222 9/23/2025
2023.2.205 263 9/22/2025
2023.2.204 233 9/22/2025
2023.2.203 248 9/22/2025
2023.2.202 256 9/22/2025
2023.2.201 274 9/21/2025
2023.2.200 247 9/21/2025
2023.2.199 210 9/21/2025
2023.2.198 255 9/20/2025
2023.2.197 219 9/20/2025
2023.2.196 240 9/20/2025
2023.2.195 274 9/19/2025
2023.2.194 291 9/19/2025
2023.2.193 281 9/19/2025
2023.2.192 298 9/19/2025
2023.2.191 357 9/18/2025
2023.2.190 345 9/18/2025
2023.2.189 340 9/17/2025
2023.2.188 329 9/17/2025
2023.2.187 349 9/17/2025
2023.2.186 327 9/16/2025
2023.2.185 337 9/16/2025
2023.2.184 336 9/15/2025
2023.2.183 334 9/15/2025
2023.2.182 282 9/15/2025
2023.2.181 296 9/15/2025
2023.2.180 274 9/15/2025
2023.2.179 211 9/10/2025
2023.2.178 492 9/2/2025
2023.2.177 198 9/2/2025
2023.2.176 247 9/2/2025
2023.2.175 215 9/2/2025
2023.2.174 203 9/2/2025
2023.2.173 241 9/1/2025
2023.2.172 209 9/1/2025
2023.2.171 157 7/19/2025
2023.2.170 511 5/18/2025
2023.2.169 1,339 5/16/2025
2023.2.168 315 5/8/2025
2023.2.167 286 4/28/2025
2023.2.166 348 4/23/2025
2023.2.165 234 4/13/2025
2023.2.164 374 4/12/2025
2023.2.163 241 4/12/2025
2023.2.162 516 3/28/2025
2023.2.161 223 3/28/2025
2023.2.160 854 3/14/2025
2023.2.159 698 3/1/2025
2023.2.158 218 2/27/2025
2023.2.157 1,143 2/10/2025
2023.2.156 543 2/5/2025
2023.2.155 190 2/3/2025
2023.2.154 229 1/10/2025
2023.2.153 265 1/10/2025
2023.2.152 1,145 12/12/2024
2023.2.151 201 11/22/2024
2023.2.150 408 11/22/2024
2023.2.149 209 11/21/2024
2023.2.148 222 11/20/2024
2023.2.147 651 11/19/2024
2023.2.146 220 11/15/2024
2023.2.145 222 11/12/2024
2023.2.144 238 11/12/2024
2023.2.143 216 11/11/2024
2023.2.142 543 11/7/2024
2023.2.141 398 11/7/2024
2023.2.140 2,337 11/6/2024
2023.2.139 393 11/6/2024
2023.2.138 215 11/5/2024
2023.2.137 518 10/24/2024
2023.2.136 3,162 10/14/2024
2023.2.135 1,019 10/4/2024
2023.2.134 265 9/29/2024
2023.2.133 218 9/25/2024
2023.2.132 305 9/24/2024
2023.2.131 201 9/24/2024
2023.2.130 402 9/11/2024
2023.2.129 2,481 9/11/2024
2023.2.128 235 9/11/2024
2023.2.127 217 9/10/2024
2023.2.126 374 9/9/2024
2023.2.125 229 9/9/2024
2023.2.124 486 9/6/2024
2023.2.123 270 8/29/2024
2023.2.122 1,202 8/28/2024
2023.2.121 200 8/27/2024
2023.2.120 210 8/27/2024
2023.2.119 511 8/27/2024
2023.2.118 213 8/27/2024
2023.2.117 256 8/27/2024
2023.2.116 570 8/9/2024
2023.2.115 391 8/5/2024
2023.2.114 229 8/5/2024
2023.2.113 429 7/25/2024
2023.2.112 359 7/12/2024
2023.2.111 2,348 7/12/2024
2023.2.110 562 7/10/2024
2023.2.109 1,982 6/10/2024
2023.2.108 415 5/30/2024
2023.2.107 251 5/28/2024
2023.2.106 534 5/27/2024
2023.2.105 210 5/24/2024
2023.2.104 247 5/23/2024
2023.2.103 217 5/23/2024
2023.2.102 297 5/23/2024
2023.2.101 208 5/23/2024
2023.2.100 244 5/22/2024
2023.2.99 221 5/22/2024
2023.2.98 428 5/22/2024
2023.2.97 204 5/22/2024
2023.2.96 261 5/22/2024
2023.2.95 246 5/21/2024
2023.2.94 207 5/21/2024
2023.2.93 364 5/19/2024
2023.2.92 230 5/19/2024
2023.2.91 268 5/18/2024
2023.2.90 494 5/15/2024
2023.2.89 286 5/15/2024
2023.2.88 232 5/15/2024
2023.2.87 218 5/13/2024
2023.2.86 1,089 4/29/2024
2023.2.85 540 4/23/2024
2023.2.84 827 4/2/2024
2023.2.83 4,332 3/28/2024
2023.2.82 239 3/26/2024
2023.2.81 208 3/23/2024
2023.2.80 492 3/22/2024
2023.2.79 239 3/13/2024
2023.2.78 625 2/12/2024
2023.2.77 277 1/10/2024
2023.2.76 994 1/8/2024
2023.2.75 394 1/8/2024
2023.2.74 252 1/5/2024
2023.2.73 227 1/5/2024
2023.2.72 231 1/5/2024
2023.2.71 556 1/3/2024
2023.2.70 3,473 1/2/2024
2023.2.69 213 12/22/2023
2023.2.68 589 12/21/2023
2023.2.67 234 12/19/2023
2023.2.66 237 12/18/2023
2023.2.65 238 12/18/2023
2023.2.64 936 12/12/2023
2023.2.63 321 12/1/2023
2023.2.62 557 12/1/2023
2023.2.61 287 11/30/2023
2023.2.60 241 11/30/2023
2023.2.59 211 11/30/2023
2023.2.58 466 11/13/2023
2023.2.57 564 10/25/2023
2023.2.56 1,334 10/23/2023
2023.2.55 242 10/20/2023
2023.2.54 244 10/20/2023
2023.2.53 508 10/19/2023
2023.2.52 349 10/18/2023
2023.2.51 212 10/18/2023
2023.2.50 287 10/17/2023
2023.2.49 1,300 10/12/2023
2023.2.48 416 10/12/2023
2023.2.47 401 10/11/2023
2023.2.46 230 10/11/2023
2023.2.45 401 10/11/2023
2023.2.44 258 10/11/2023
2023.2.43 385 9/25/2023
2023.2.42 274 9/20/2023
2023.2.41 2,215 9/11/2023
2023.2.40 511 8/30/2023
2023.2.39 477 8/25/2023
2023.2.38 477 8/22/2023
2023.2.37 379 8/21/2023
2023.2.36 2,396 8/18/2023
2023.2.35 292 8/18/2023
2023.2.34 296 8/9/2023
2023.2.33 319 7/29/2023
2023.2.32 1,201 7/26/2023
2023.2.31 282 7/25/2023
2023.2.30 321 7/25/2023
2023.2.29 369 7/23/2023
2023.2.28 302 7/23/2023
2023.2.27 319 7/21/2023
2023.2.26 530 7/19/2023
2023.2.25 326 7/19/2023
2023.2.24 1,459 6/27/2023
2023.2.23 426 6/26/2023
2023.2.22 546 6/25/2023
2023.2.21 290 6/24/2023
2023.2.20 307 6/23/2023
2023.2.19 306 6/23/2023
2023.2.18 317 6/23/2023
2023.2.17 312 6/22/2023
2023.2.16 402 6/22/2023
2023.2.15 324 6/22/2023
2023.2.14 329 6/21/2023
2023.2.13 329 6/16/2023
2023.2.12 319 6/15/2023
2023.2.11 746 6/13/2023
2023.2.10 305 6/12/2023
2023.2.9 321 6/12/2023
2023.2.8 320 6/12/2023
2023.2.7 417 6/10/2023
2023.2.6-preview 291 6/10/2023
2023.2.5-preview 242 6/9/2023
2023.2.4-preview 349 6/9/2023
2023.2.3-preview 296 6/7/2023
2023.2.2-preview 323 6/2/2023
2023.2.1-preview 304 6/2/2023
2023.1.28-preview 188 9/5/2024
2023.1.27-preview 173 9/5/2024
2023.1.26-preview 227 9/4/2024
2023.1.25-preview 185 9/4/2024
2023.1.24-preview 164 9/4/2024
2023.1.23-preview 196 9/4/2024
2023.1.22-preview 176 9/3/2024
2023.1.21-preview 193 9/3/2024
2023.1.20-preview 215 9/3/2024
2023.1.19-preview 190 9/2/2024
2023.1.18-preview 206 9/2/2024
2023.1.17-preview 180 9/2/2024
2023.1.16-preview 182 8/30/2024
2023.1.15-preview 209 8/29/2024
2023.1.14-preview 330 5/24/2023
2023.1.13-preview 1,002 5/24/2023
2023.1.12-preview 306 5/23/2023
2023.1.11-preview 280 5/23/2023
2023.1.10-preview 261 5/17/2023
2023.1.9-preview 310 5/17/2023
2023.1.8-preview 249 5/15/2023
2023.1.7-preview 542 5/10/2023
2023.1.6-preview 355 4/27/2023
2023.1.5-preview 333 4/26/2023
2023.1.4-preview 264 4/26/2023
2023.1.3-preview 367 4/21/2023
2023.1.2-preview 289 4/21/2023
2023.1.1-preview 278 4/21/2023
2023.1.0-preview 264 4/21/2023
2023.0.150 321 5/29/2023
2023.0.149 616 5/24/2023
2023.0.148 353 5/23/2023
2023.0.147 369 5/17/2023
2023.0.146 402 5/17/2023
2023.0.145 312 5/9/2023
2023.0.144 562 5/2/2023
2023.0.143 567 5/2/2023
1.0.142-preview 292 4/24/2023
1.0.141-preview 366 4/5/2023
1.0.140-preview 389 4/4/2023
1.0.139-preview 375 3/30/2023
1.0.138-preview 352 3/30/2023
1.0.137-preview 269 3/30/2023
1.0.136-preview 280 3/30/2023
1.0.135-preview 869 3/30/2023
1.0.134-preview 441 3/1/2023
1.0.133-preview 304 3/1/2023
1.0.132-preview 708 2/27/2023
1.0.131-preview 539 2/24/2023
1.0.130-preview 1,001 2/22/2023
1.0.129-preview 292 2/22/2023
1.0.128-preview 332 2/21/2023
1.0.127-preview 277 2/17/2023
1.0.126-preview 774 2/16/2023
1.0.125-preview 316 2/16/2023
1.0.124-preview 294 2/15/2023
1.0.123-preview 293 2/15/2023
1.0.122-preview 290 2/10/2023
1.0.121-preview 252 2/10/2023
1.0.120-preview 264 2/10/2023
1.0.119-preview 336 2/9/2023
1.0.118-preview 299 2/8/2023
1.0.117-preview 322 1/30/2023
1.0.116-preview 297 1/26/2023
1.0.115-preview 295 1/26/2023
1.0.114-preview 962 1/16/2023
1.0.113-preview 344 1/13/2023
1.0.112-preview 490 1/8/2023
1.0.111-preview 598 1/5/2023
1.0.110-preview 806 12/18/2022
1.0.109-preview 322 12/15/2022
1.0.108-preview 320 12/13/2022
1.0.107-preview 345 12/9/2022
1.0.107-alpha.2 229 12/9/2022
1.0.107-alpha.1 213 12/9/2022
1.0.106-preview 342 12/8/2022
1.0.105-preview 297 12/8/2022
1.0.105-alpha.2 254 12/8/2022
1.0.105-alpha.1 226 12/6/2022
1.0.104-preview 358 12/5/2022
1.0.103-preview 430 12/2/2022
1.0.102-preview 590 11/18/2022
1.0.101-preview 1,327 11/3/2022
1.0.101-alpha.3 243 11/3/2022
1.0.101-alpha.2 273 11/2/2022
1.0.101-alpha.1 219 11/2/2022
1.0.100-preview 1,156 10/28/2022
1.0.99-preview 558 10/27/2022
1.0.99-alpha.3 247 10/27/2022
1.0.99-alpha.2 246 10/26/2022
1.0.99-alpha.1 228 10/26/2022
1.0.98-preview 390 10/25/2022
1.0.97-preview 602 10/20/2022
1.0.97-alpha.2 271 10/19/2022
1.0.97-alpha.1 277 10/19/2022
1.0.96-preview 545 10/7/2022
1.0.95-preview 307 10/4/2022
1.0.94-preview 721 9/29/2022
1.0.93-preview 336 9/29/2022
1.0.92-preview 333 9/27/2022
1.0.91-preview 400 9/27/2022
1.0.90-preview 357 9/27/2022
1.0.90-alpha.1 250 9/26/2022
1.0.89-preview 560 9/11/2022
1.0.87-preview 789 9/6/2022
1.0.86-preview 530 9/5/2022
1.0.86-alpha.1 231 9/2/2022
1.0.85-preview 489 8/2/2022
1.0.84-preview 495 7/29/2022
1.0.83-preview 572 7/28/2022
1.0.83-alpha.3 272 7/28/2022
1.0.83-alpha.2 259 7/28/2022
1.0.83-alpha.1 270 7/28/2022
1.0.82-preview 792 7/27/2022
1.0.82-beta.3 298 7/27/2022
1.0.82-beta.2 299 7/26/2022
1.0.82-beta 345 7/26/2022
1.0.82-alpha.1 248 7/25/2022
1.0.81-preview 391 7/22/2022
1.0.80-preview 367 7/20/2022
1.0.80-alpha.3 287 7/20/2022
1.0.80-alpha.2 253 7/20/2022
1.0.80-alpha 344 7/20/2022
1.0.79-preview 464 7/19/2022
1.0.79-beta 325 7/15/2022
1.0.79-alpha.1 367 7/2/2022
1.0.78-preview 440 7/12/2022
1.0.78-alpha.1 294 7/2/2022
1.0.77-preview 413 6/24/2022
1.0.76-preview 373 6/22/2022
1.0.75-preview 423 6/21/2022
1.0.74-preview 344 6/18/2022
1.0.73-preview 293 6/16/2022
1.0.72-preview 334 6/15/2022
1.0.71-preview 359 6/10/2022
1.0.70-preview 996 6/6/2022
1.0.70-beta 367 6/3/2022
1.0.69-preview 373 5/24/2022
1.0.68-preview 475 5/23/2022
1.0.68-beta-4 313 5/23/2022
1.0.68-beta-3 358 5/16/2022
1.0.68-beta-2 333 5/16/2022
1.0.68-beta 342 5/12/2022
1.0.67-preview 431 5/11/2022
1.0.67-beta-4 328 5/11/2022
1.0.67-beta-3 343 5/10/2022
1.0.67-beta-2 316 5/10/2022
1.0.67-beta 332 5/10/2022
1.0.66-preview 336 5/9/2022
1.0.65-preview 335 5/4/2022
1.0.65-beta 338 4/29/2022
1.0.64-preview 347 4/26/2022
1.0.63-preview 352 4/22/2022
1.0.63-beta-6 366 4/21/2022
1.0.63-beta-5 332 4/21/2022
1.0.63-beta-4 353 4/21/2022
1.0.63-beta-3 361 4/20/2022
1.0.63-beta-2 339 4/20/2022
1.0.63-beta 339 4/19/2022
1.0.62-preview 373 4/15/2022
1.0.62-beta-6 323 4/14/2022
1.0.62-beta-5 334 4/14/2022
1.0.62-beta-4 343 4/14/2022
1.0.62-beta-3 363 4/13/2022
1.0.62-beta-2 344 4/11/2022
1.0.62-beta 343 4/11/2022
1.0.61-preview 391 4/7/2022
1.0.61-beta 353 4/7/2022
1.0.60-preview 376 4/6/2022
1.0.59-preview 360 4/6/2022
1.0.59-beta 377 4/6/2022
1.0.58-beta-6 339 4/6/2022
1.0.58-beta-5 358 4/5/2022
1.0.58-beta-4 347 4/5/2022
1.0.58-beta-3 317 4/5/2022
1.0.58-beta-2 352 4/5/2022
1.0.58-beta 357 4/5/2022
1.0.56-preview 361 4/1/2022
1.0.56-beta-9 351 3/28/2022
1.0.56-beta-8 352 3/28/2022
1.0.56-beta-7 341 3/28/2022
1.0.56-beta-6 370 3/28/2022
1.0.56-beta-5 325 3/25/2022
1.0.56-beta-4 341 3/24/2022
1.0.56-beta-3 355 3/22/2022
1.0.56-beta-2 342 3/22/2022
1.0.56-beta-14 336 3/29/2022
1.0.56-beta-13 370 3/28/2022
1.0.56-beta-12 330 3/28/2022
1.0.56-beta-11 359 3/28/2022
1.0.56-beta-10 358 3/28/2022
1.0.56-beta 351 3/22/2022
1.0.55-preview 370 3/22/2022
1.0.54-preview 364 3/16/2022
1.0.53-preview 342 3/16/2022
1.0.52-preview 375 3/16/2022
1.0.51-preview 347 3/15/2022
1.0.50-preview 364 3/9/2022
1.0.49-preview 346 3/3/2022
1.0.48-preview 340 2/23/2022
1.0.47-preview 379 2/21/2022
1.0.46-preview 473 2/21/2022
1.0.45-preview 326 2/18/2022
1.0.43-preview 366 2/16/2022
1.0.42-preview 405 2/10/2022
1.0.41-preview 356 2/10/2022
1.0.40-preview 354 2/10/2022
1.0.39-preview 366 2/7/2022
1.0.38-preview 375 2/4/2022
1.0.37-preview 351 2/4/2022
1.0.36-preview 395 1/25/2022
1.0.35-preview 366 1/25/2022
1.0.34-preview 340 1/25/2022
1.0.33-preview 367 1/13/2022
1.0.32-preview 407 1/13/2022
1.0.31-preview 366 1/13/2022
1.0.30-preview 364 1/13/2022
1.0.29-preview 352 1/13/2022
1.0.28-preview 358 1/12/2022
1.0.27-preview 349 1/12/2022
1.0.26-preview 378 1/12/2022
1.0.25-preview 397 1/10/2022
1.0.24-preview 366 1/6/2022
1.0.23-preview 392 1/4/2022
1.0.22-preview 333 12/15/2021
1.0.21-preview 445 12/14/2021
1.0.20-preview 451 12/14/2021
1.0.19-preview 390 12/10/2021
1.0.18-preview 412 12/9/2021
1.0.17-preview 615 12/9/2021
1.0.16-preview 357 12/9/2021
1.0.15-preview 390 12/9/2021
1.0.14-preview 414 12/9/2021
1.0.13-preview 398 12/9/2021
1.0.12-preview 377 12/9/2021
1.0.10-preview 370 12/8/2021
1.0.9-preview 409 12/7/2021
1.0.8-preview 362 12/7/2021
1.0.7-preview 385 12/7/2021
1.0.6-preview 389 12/7/2021
1.0.4-preview 365 12/3/2021
1.0.3-preview 348 12/3/2021
1.0.2-preview 367 12/3/2021
1.0.1-preview 396 12/2/2021
1.0.0-preview 398 12/2/2021