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.313 31 1/26/2026
2023.2.312 56 1/24/2026
2023.2.311 56 1/23/2026
2023.2.310 49 1/23/2026
2023.2.309 40 1/23/2026
2023.2.308 76 1/19/2026
2023.2.307 114 1/12/2026
2023.2.306 118 1/9/2026
2023.2.305 72 1/7/2026
2023.2.304 74 1/6/2026
2023.2.303 76 1/5/2026
2023.2.302 76 1/5/2026
2023.2.301 61 1/5/2026
2023.2.300 70 1/5/2026
2023.2.299 90 1/5/2026
2023.2.298 75 1/3/2026
2023.2.297 70 1/3/2026
2023.2.296 85 1/2/2026
2023.2.295 104 12/31/2025
2023.2.294 81 12/31/2025
2023.2.293 78 12/31/2025
2023.2.292 205 12/23/2025
2023.2.291 169 12/23/2025
2023.2.290 213 12/19/2025
2023.2.289 205 12/19/2025
2023.2.288 260 12/18/2025
2023.2.287 258 12/18/2025
2023.2.286 264 12/18/2025
2023.2.285 266 12/17/2025
2023.2.284 260 12/16/2025
2023.2.283 231 12/15/2025
2023.2.282 228 12/15/2025
2023.2.281 211 12/14/2025
2023.2.280 194 12/14/2025
2023.2.279 163 12/12/2025
2023.2.278 447 12/11/2025
2023.2.277 168 12/6/2025
2023.2.276 1,217 12/2/2025
2023.2.275 713 11/5/2025
2023.2.274 232 11/3/2025
2023.2.273 227 10/31/2025
2023.2.272 231 10/30/2025
2023.2.271 581 10/29/2025
2023.2.270 477 10/14/2025
2023.2.269 271 10/14/2025
2023.2.268 326 10/13/2025
2023.2.267 187 10/11/2025
2023.2.266 221 10/8/2025
2023.2.265 208 10/8/2025
2023.2.264 220 10/7/2025
2023.2.263 222 10/7/2025
2023.2.262 223 10/7/2025
2023.2.261 209 10/7/2025
2023.2.260 210 10/6/2025
2023.2.259 219 10/3/2025
2023.2.258 168 10/3/2025
2023.2.257 228 10/3/2025
2023.2.256 229 10/3/2025
2023.2.255 186 10/3/2025
2023.2.254 244 10/2/2025
2023.2.253 211 10/2/2025
2023.2.252 226 10/1/2025
2023.2.251 659 10/1/2025
2023.2.250 259 10/1/2025
2023.2.249 300 9/30/2025
2023.2.248 224 9/30/2025
2023.2.247 218 9/30/2025
2023.2.246 263 9/30/2025
2023.2.245 226 9/30/2025
2023.2.244 217 9/30/2025
2023.2.243 230 9/30/2025
2023.2.242 246 9/30/2025
2023.2.241 221 9/29/2025
2023.2.240 231 9/29/2025
2023.2.239 228 9/29/2025
2023.2.238 253 9/29/2025
2023.2.237 604 9/29/2025
2023.2.236 856 9/29/2025
2023.2.235 261 9/28/2025
2023.2.234 272 9/28/2025
2023.2.233 195 9/28/2025
2023.2.232 189 9/28/2025
2023.2.231 204 9/28/2025
2023.2.230 198 9/28/2025
2023.2.229 189 9/28/2025
2023.2.228 208 9/28/2025
2023.2.227 149 9/27/2025
2023.2.226 153 9/27/2025
2023.2.225 188 9/27/2025
2023.2.224 155 9/27/2025
2023.2.223 152 9/27/2025
2023.2.222 167 9/27/2025
2023.2.221 166 9/27/2025
2023.2.220 144 9/27/2025
2023.2.219 181 9/26/2025
2023.2.218 180 9/26/2025
2023.2.217 169 9/26/2025
2023.2.216 212 9/26/2025
2023.2.215 196 9/26/2025
2023.2.214 191 9/26/2025
2023.2.213 226 9/25/2025
2023.2.212 234 9/25/2025
2023.2.211 235 9/24/2025
2023.2.210 222 9/24/2025
2023.2.209 230 9/24/2025
2023.2.208 234 9/24/2025
2023.2.207 234 9/23/2025
2023.2.206 227 9/23/2025
2023.2.205 265 9/22/2025
2023.2.204 241 9/22/2025
2023.2.203 250 9/22/2025
2023.2.202 260 9/22/2025
2023.2.201 280 9/21/2025
2023.2.200 250 9/21/2025
2023.2.199 214 9/21/2025
2023.2.198 259 9/20/2025
2023.2.197 222 9/20/2025
2023.2.196 244 9/20/2025
2023.2.195 280 9/19/2025
2023.2.194 296 9/19/2025
2023.2.193 284 9/19/2025
2023.2.192 302 9/19/2025
2023.2.191 361 9/18/2025
2023.2.190 348 9/18/2025
2023.2.189 343 9/17/2025
2023.2.188 331 9/17/2025
2023.2.187 353 9/17/2025
2023.2.186 331 9/16/2025
2023.2.185 340 9/16/2025
2023.2.184 338 9/15/2025
2023.2.183 337 9/15/2025
2023.2.182 285 9/15/2025
2023.2.181 300 9/15/2025
2023.2.180 279 9/15/2025
2023.2.179 214 9/10/2025
2023.2.178 496 9/2/2025
2023.2.177 205 9/2/2025
2023.2.176 253 9/2/2025
2023.2.175 220 9/2/2025
2023.2.174 205 9/2/2025
2023.2.173 244 9/1/2025
2023.2.172 211 9/1/2025
2023.2.171 160 7/19/2025
2023.2.170 516 5/18/2025
2023.2.169 1,342 5/16/2025
2023.2.168 319 5/8/2025
2023.2.167 292 4/28/2025
2023.2.166 353 4/23/2025
2023.2.165 239 4/13/2025
2023.2.164 379 4/12/2025
2023.2.163 245 4/12/2025
2023.2.162 520 3/28/2025
2023.2.161 227 3/28/2025
2023.2.160 857 3/14/2025
2023.2.159 703 3/1/2025
2023.2.158 223 2/27/2025
2023.2.157 1,166 2/10/2025
2023.2.156 547 2/5/2025
2023.2.155 193 2/3/2025
2023.2.154 233 1/10/2025
2023.2.153 270 1/10/2025
2023.2.152 1,162 12/12/2024
2023.2.151 207 11/22/2024
2023.2.150 422 11/22/2024
2023.2.149 215 11/21/2024
2023.2.148 226 11/20/2024
2023.2.147 657 11/19/2024
2023.2.146 222 11/15/2024
2023.2.145 229 11/12/2024
2023.2.144 246 11/12/2024
2023.2.143 220 11/11/2024
2023.2.142 547 11/7/2024
2023.2.141 401 11/7/2024
2023.2.140 2,350 11/6/2024
2023.2.139 398 11/6/2024
2023.2.138 217 11/5/2024
2023.2.137 534 10/24/2024
2023.2.136 3,166 10/14/2024
2023.2.135 1,041 10/4/2024
2023.2.134 269 9/29/2024
2023.2.133 221 9/25/2024
2023.2.132 309 9/24/2024
2023.2.131 203 9/24/2024
2023.2.130 404 9/11/2024
2023.2.129 2,514 9/11/2024
2023.2.128 239 9/11/2024
2023.2.127 221 9/10/2024
2023.2.126 381 9/9/2024
2023.2.125 235 9/9/2024
2023.2.124 492 9/6/2024
2023.2.123 274 8/29/2024
2023.2.122 1,205 8/28/2024
2023.2.121 204 8/27/2024
2023.2.120 216 8/27/2024
2023.2.119 514 8/27/2024
2023.2.118 218 8/27/2024
2023.2.117 262 8/27/2024
2023.2.116 575 8/9/2024
2023.2.115 397 8/5/2024
2023.2.114 235 8/5/2024
2023.2.113 431 7/25/2024
2023.2.112 363 7/12/2024
2023.2.111 2,412 7/12/2024
2023.2.110 574 7/10/2024
2023.2.109 2,005 6/10/2024
2023.2.108 418 5/30/2024
2023.2.107 259 5/28/2024
2023.2.106 538 5/27/2024
2023.2.105 215 5/24/2024
2023.2.104 252 5/23/2024
2023.2.103 219 5/23/2024
2023.2.102 299 5/23/2024
2023.2.101 211 5/23/2024
2023.2.100 246 5/22/2024
2023.2.99 226 5/22/2024
2023.2.98 439 5/22/2024
2023.2.97 212 5/22/2024
2023.2.96 264 5/22/2024
2023.2.95 254 5/21/2024
2023.2.94 210 5/21/2024
2023.2.93 369 5/19/2024
2023.2.92 235 5/19/2024
2023.2.91 272 5/18/2024
2023.2.90 497 5/15/2024
2023.2.89 290 5/15/2024
2023.2.88 234 5/15/2024
2023.2.87 220 5/13/2024
2023.2.86 1,092 4/29/2024
2023.2.85 542 4/23/2024
2023.2.84 833 4/2/2024
2023.2.83 4,415 3/28/2024
2023.2.82 244 3/26/2024
2023.2.81 213 3/23/2024
2023.2.80 506 3/22/2024
2023.2.79 243 3/13/2024
2023.2.78 630 2/12/2024
2023.2.77 280 1/10/2024
2023.2.76 1,049 1/8/2024
2023.2.75 397 1/8/2024
2023.2.74 257 1/5/2024
2023.2.73 231 1/5/2024
2023.2.72 234 1/5/2024
2023.2.71 563 1/3/2024
2023.2.70 3,478 1/2/2024
2023.2.69 215 12/22/2023
2023.2.68 591 12/21/2023
2023.2.67 241 12/19/2023
2023.2.66 240 12/18/2023
2023.2.65 241 12/18/2023
2023.2.64 942 12/12/2023
2023.2.63 324 12/1/2023
2023.2.62 573 12/1/2023
2023.2.61 289 11/30/2023
2023.2.60 242 11/30/2023
2023.2.59 213 11/30/2023
2023.2.58 478 11/13/2023
2023.2.57 573 10/25/2023
2023.2.56 1,338 10/23/2023
2023.2.55 243 10/20/2023
2023.2.54 245 10/20/2023
2023.2.53 508 10/19/2023
2023.2.52 352 10/18/2023
2023.2.51 213 10/18/2023
2023.2.50 291 10/17/2023
2023.2.49 1,302 10/12/2023
2023.2.48 434 10/12/2023
2023.2.47 407 10/11/2023
2023.2.46 230 10/11/2023
2023.2.45 403 10/11/2023
2023.2.44 260 10/11/2023
2023.2.43 386 9/25/2023
2023.2.42 276 9/20/2023
2023.2.41 2,217 9/11/2023
2023.2.40 513 8/30/2023
2023.2.39 480 8/25/2023
2023.2.38 477 8/22/2023
2023.2.37 382 8/21/2023
2023.2.36 2,399 8/18/2023
2023.2.35 292 8/18/2023
2023.2.34 300 8/9/2023
2023.2.33 321 7/29/2023
2023.2.32 1,203 7/26/2023
2023.2.31 285 7/25/2023
2023.2.30 323 7/25/2023
2023.2.29 369 7/23/2023
2023.2.28 305 7/23/2023
2023.2.27 322 7/21/2023
2023.2.26 535 7/19/2023
2023.2.25 327 7/19/2023
2023.2.24 1,461 6/27/2023
2023.2.23 426 6/26/2023
2023.2.22 547 6/25/2023
2023.2.21 292 6/24/2023
2023.2.20 311 6/23/2023
2023.2.19 309 6/23/2023
2023.2.18 318 6/23/2023
2023.2.17 313 6/22/2023
2023.2.16 404 6/22/2023
2023.2.15 329 6/22/2023
2023.2.14 332 6/21/2023
2023.2.13 331 6/16/2023
2023.2.12 322 6/15/2023
2023.2.11 749 6/13/2023
2023.2.10 307 6/12/2023
2023.2.9 324 6/12/2023
2023.2.8 324 6/12/2023
2023.2.7 418 6/10/2023
2023.2.6-preview 293 6/10/2023
2023.2.5-preview 245 6/9/2023
2023.2.4-preview 351 6/9/2023
2023.2.3-preview 300 6/7/2023
2023.2.2-preview 326 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 228 9/4/2024
2023.1.25-preview 188 9/4/2024
2023.1.24-preview 166 9/4/2024
2023.1.23-preview 200 9/4/2024
2023.1.22-preview 179 9/3/2024
2023.1.21-preview 194 9/3/2024
2023.1.20-preview 215 9/3/2024
2023.1.19-preview 193 9/2/2024
2023.1.18-preview 207 9/2/2024
2023.1.17-preview 184 9/2/2024
2023.1.16-preview 183 8/30/2024
2023.1.15-preview 211 8/29/2024
2023.1.14-preview 331 5/24/2023
2023.1.13-preview 1,002 5/24/2023
2023.1.12-preview 310 5/23/2023
2023.1.11-preview 282 5/23/2023
2023.1.10-preview 265 5/17/2023
2023.1.9-preview 313 5/17/2023
2023.1.8-preview 250 5/15/2023
2023.1.7-preview 545 5/10/2023
2023.1.6-preview 358 4/27/2023
2023.1.5-preview 336 4/26/2023
2023.1.4-preview 265 4/26/2023
2023.1.3-preview 368 4/21/2023
2023.1.2-preview 289 4/21/2023
2023.1.1-preview 282 4/21/2023
2023.1.0-preview 265 4/21/2023
2023.0.150 323 5/29/2023
2023.0.149 618 5/24/2023
2023.0.148 354 5/23/2023
2023.0.147 372 5/17/2023
2023.0.146 405 5/17/2023
2023.0.145 312 5/9/2023
2023.0.144 563 5/2/2023
2023.0.143 574 5/2/2023
1.0.142-preview 293 4/24/2023
1.0.141-preview 367 4/5/2023
1.0.140-preview 390 4/4/2023
1.0.139-preview 379 3/30/2023
1.0.138-preview 355 3/30/2023
1.0.137-preview 272 3/30/2023
1.0.136-preview 282 3/30/2023
1.0.135-preview 872 3/30/2023
1.0.134-preview 444 3/1/2023
1.0.133-preview 309 3/1/2023
1.0.132-preview 709 2/27/2023
1.0.131-preview 542 2/24/2023
1.0.130-preview 1,006 2/22/2023
1.0.129-preview 297 2/22/2023
1.0.128-preview 336 2/21/2023
1.0.127-preview 277 2/17/2023
1.0.126-preview 774 2/16/2023
1.0.125-preview 320 2/16/2023
1.0.124-preview 294 2/15/2023
1.0.123-preview 294 2/15/2023
1.0.122-preview 293 2/10/2023
1.0.121-preview 257 2/10/2023
1.0.120-preview 266 2/10/2023
1.0.119-preview 340 2/9/2023
1.0.118-preview 300 2/8/2023
1.0.117-preview 324 1/30/2023
1.0.116-preview 301 1/26/2023
1.0.115-preview 299 1/26/2023
1.0.114-preview 966 1/16/2023
1.0.113-preview 345 1/13/2023
1.0.112-preview 492 1/8/2023
1.0.111-preview 602 1/5/2023
1.0.110-preview 809 12/18/2022
1.0.109-preview 323 12/15/2022
1.0.108-preview 323 12/13/2022
1.0.107-preview 349 12/9/2022
1.0.107-alpha.2 231 12/9/2022
1.0.107-alpha.1 215 12/9/2022
1.0.106-preview 346 12/8/2022
1.0.105-preview 298 12/8/2022
1.0.105-alpha.2 258 12/8/2022
1.0.105-alpha.1 227 12/6/2022
1.0.104-preview 360 12/5/2022
1.0.103-preview 433 12/2/2022
1.0.102-preview 594 11/18/2022
1.0.101-preview 1,331 11/3/2022
1.0.101-alpha.3 244 11/3/2022
1.0.101-alpha.2 275 11/2/2022
1.0.101-alpha.1 220 11/2/2022
1.0.100-preview 1,160 10/28/2022
1.0.99-preview 559 10/27/2022
1.0.99-alpha.3 248 10/27/2022
1.0.99-alpha.2 251 10/26/2022
1.0.99-alpha.1 229 10/26/2022
1.0.98-preview 393 10/25/2022
1.0.97-preview 603 10/20/2022
1.0.97-alpha.2 273 10/19/2022
1.0.97-alpha.1 281 10/19/2022
1.0.96-preview 549 10/7/2022
1.0.95-preview 308 10/4/2022
1.0.94-preview 727 9/29/2022
1.0.93-preview 338 9/29/2022
1.0.92-preview 333 9/27/2022
1.0.91-preview 401 9/27/2022
1.0.90-preview 359 9/27/2022
1.0.90-alpha.1 256 9/26/2022
1.0.89-preview 562 9/11/2022
1.0.87-preview 790 9/6/2022
1.0.86-preview 533 9/5/2022
1.0.86-alpha.1 235 9/2/2022
1.0.85-preview 491 8/2/2022
1.0.84-preview 496 7/29/2022
1.0.83-preview 575 7/28/2022
1.0.83-alpha.3 275 7/28/2022
1.0.83-alpha.2 262 7/28/2022
1.0.83-alpha.1 272 7/28/2022
1.0.82-preview 798 7/27/2022
1.0.82-beta.3 302 7/27/2022
1.0.82-beta.2 304 7/26/2022
1.0.82-beta 347 7/26/2022
1.0.82-alpha.1 250 7/25/2022
1.0.81-preview 393 7/22/2022
1.0.80-preview 368 7/20/2022
1.0.80-alpha.3 289 7/20/2022
1.0.80-alpha.2 254 7/20/2022
1.0.80-alpha 346 7/20/2022
1.0.79-preview 465 7/19/2022
1.0.79-beta 328 7/15/2022
1.0.79-alpha.1 371 7/2/2022
1.0.78-preview 443 7/12/2022
1.0.78-alpha.1 298 7/2/2022
1.0.77-preview 416 6/24/2022
1.0.76-preview 377 6/22/2022
1.0.75-preview 426 6/21/2022
1.0.74-preview 345 6/18/2022
1.0.73-preview 293 6/16/2022
1.0.72-preview 335 6/15/2022
1.0.71-preview 361 6/10/2022
1.0.70-preview 998 6/6/2022
1.0.70-beta 371 6/3/2022
1.0.69-preview 374 5/24/2022
1.0.68-preview 478 5/23/2022
1.0.68-beta-4 316 5/23/2022
1.0.68-beta-3 360 5/16/2022
1.0.68-beta-2 336 5/16/2022
1.0.68-beta 347 5/12/2022
1.0.67-preview 433 5/11/2022
1.0.67-beta-4 328 5/11/2022
1.0.67-beta-3 348 5/10/2022
1.0.67-beta-2 319 5/10/2022
1.0.67-beta 335 5/10/2022
1.0.66-preview 337 5/9/2022
1.0.65-preview 338 5/4/2022
1.0.65-beta 340 4/29/2022
1.0.64-preview 350 4/26/2022
1.0.63-preview 354 4/22/2022
1.0.63-beta-6 371 4/21/2022
1.0.63-beta-5 335 4/21/2022
1.0.63-beta-4 357 4/21/2022
1.0.63-beta-3 364 4/20/2022
1.0.63-beta-2 339 4/20/2022
1.0.63-beta 341 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 337 4/14/2022
1.0.62-beta-4 345 4/14/2022
1.0.62-beta-3 364 4/13/2022
1.0.62-beta-2 346 4/11/2022
1.0.62-beta 343 4/11/2022
1.0.61-preview 394 4/7/2022
1.0.61-beta 355 4/7/2022
1.0.60-preview 379 4/6/2022
1.0.59-preview 361 4/6/2022
1.0.59-beta 380 4/6/2022
1.0.58-beta-6 344 4/6/2022
1.0.58-beta-5 360 4/5/2022
1.0.58-beta-4 350 4/5/2022
1.0.58-beta-3 322 4/5/2022
1.0.58-beta-2 354 4/5/2022
1.0.58-beta 359 4/5/2022
1.0.56-preview 361 4/1/2022
1.0.56-beta-9 353 3/28/2022
1.0.56-beta-8 352 3/28/2022
1.0.56-beta-7 342 3/28/2022
1.0.56-beta-6 374 3/28/2022
1.0.56-beta-5 327 3/25/2022
1.0.56-beta-4 342 3/24/2022
1.0.56-beta-3 355 3/22/2022
1.0.56-beta-2 345 3/22/2022
1.0.56-beta-14 339 3/29/2022
1.0.56-beta-13 371 3/28/2022
1.0.56-beta-12 331 3/28/2022
1.0.56-beta-11 360 3/28/2022
1.0.56-beta-10 362 3/28/2022
1.0.56-beta 352 3/22/2022
1.0.55-preview 379 3/22/2022
1.0.54-preview 367 3/16/2022
1.0.53-preview 344 3/16/2022
1.0.52-preview 377 3/16/2022
1.0.51-preview 351 3/15/2022
1.0.50-preview 366 3/9/2022
1.0.49-preview 348 3/3/2022
1.0.48-preview 342 2/23/2022
1.0.47-preview 382 2/21/2022
1.0.46-preview 475 2/21/2022
1.0.45-preview 327 2/18/2022
1.0.43-preview 368 2/16/2022
1.0.42-preview 405 2/10/2022
1.0.41-preview 359 2/10/2022
1.0.40-preview 356 2/10/2022
1.0.39-preview 367 2/7/2022
1.0.38-preview 379 2/4/2022
1.0.37-preview 355 2/4/2022
1.0.36-preview 396 1/25/2022
1.0.35-preview 370 1/25/2022
1.0.34-preview 341 1/25/2022
1.0.33-preview 369 1/13/2022
1.0.32-preview 410 1/13/2022
1.0.31-preview 368 1/13/2022
1.0.30-preview 367 1/13/2022
1.0.29-preview 352 1/13/2022
1.0.28-preview 361 1/12/2022
1.0.27-preview 350 1/12/2022
1.0.26-preview 379 1/12/2022
1.0.25-preview 400 1/10/2022
1.0.24-preview 369 1/6/2022
1.0.23-preview 393 1/4/2022
1.0.22-preview 333 12/15/2021
1.0.21-preview 446 12/14/2021
1.0.20-preview 454 12/14/2021
1.0.19-preview 390 12/10/2021
1.0.18-preview 413 12/9/2021
1.0.17-preview 618 12/9/2021
1.0.16-preview 357 12/9/2021
1.0.15-preview 396 12/9/2021
1.0.14-preview 415 12/9/2021
1.0.13-preview 400 12/9/2021
1.0.12-preview 379 12/9/2021
1.0.10-preview 372 12/8/2021
1.0.9-preview 413 12/7/2021
1.0.8-preview 364 12/7/2021
1.0.7-preview 386 12/7/2021
1.0.6-preview 391 12/7/2021
1.0.4-preview 366 12/3/2021
1.0.3-preview 350 12/3/2021
1.0.2-preview 368 12/3/2021
1.0.1-preview 400 12/2/2021
1.0.0-preview 399 12/2/2021