diff --git a/AsyncRx.NET/ApiCompare/ApiCompare.csproj b/AsyncRx.NET/ApiCompare/ApiCompare.csproj
index 994ccbbefd..79e6e94db8 100644
--- a/AsyncRx.NET/ApiCompare/ApiCompare.csproj
+++ b/AsyncRx.NET/ApiCompare/ApiCompare.csproj
@@ -3,6 +3,10 @@
Exe
netcoreapp3.1
+
+
+ false
+ net6.0
diff --git a/AsyncRx.NET/Directory.build.props b/AsyncRx.NET/Directory.build.props
index 966494a6e9..d7701965fb 100644
--- a/AsyncRx.NET/Directory.build.props
+++ b/AsyncRx.NET/Directory.build.props
@@ -14,7 +14,6 @@
en-US
false
$(MSBuildProjectName.Contains('Tests'))
- $(MSBuildThisFileDirectory)Rx.ruleset
true
$(MSBuildThisFileDirectory)artifacts
true
diff --git a/AsyncRx.NET/Playground/Playground.csproj b/AsyncRx.NET/Playground/Playground.csproj
index d2a41a42cd..15d9f54aff 100644
--- a/AsyncRx.NET/Playground/Playground.csproj
+++ b/AsyncRx.NET/Playground/Playground.csproj
@@ -3,6 +3,10 @@
Exe
netcoreapp3.1
+
+
+ false
+ net6.0
diff --git a/AsyncRx.NET/build/signclient.json b/AsyncRx.NET/build/signclient.json
new file mode 100644
index 0000000000..3276a45de5
--- /dev/null
+++ b/AsyncRx.NET/build/signclient.json
@@ -0,0 +1,13 @@
+{
+ "SignClient": {
+ "AzureAd": {
+ "AADInstance": "https://login.microsoftonline.com/",
+ "ClientId": "c248d68a-ba6f-4aa9-8a68-71fe872063f8",
+ "TenantId": "16076fdc-fcc1-4a15-b1ca-32c9a255900e"
+ },
+ "Service": {
+ "Url": "https://codesign.dotnetfoundation.org/",
+ "ResourceId": "https://SignService/3c30251f-36f3-490b-a955-520addb85001"
+ }
+ }
+}
\ No newline at end of file
diff --git a/AsyncRx.NET/version.json b/AsyncRx.NET/version.json
new file mode 100644
index 0000000000..193632c5e6
--- /dev/null
+++ b/AsyncRx.NET/version.json
@@ -0,0 +1,11 @@
+{
+ "version": "6.0.0-alpha.{height}",
+ "publicReleaseRefSpec": [
+ "^refs/heads/main$", // we release out of main
+ "^refs/heads/rel/v\\d+\\.\\d+", // we also release branches starting with rel/vN.N
+ "^refs/heads/rel/rx-v\\d+\\.\\d+" // we also release branches starting with rel/vN.N
+ ],
+ "nugetPackageVersion":{
+ "semVer": 2
+ }
+}
diff --git a/azure-pipelines.asyncrx.yml b/azure-pipelines.asyncrx.yml
new file mode 100644
index 0000000000..6d53f38560
--- /dev/null
+++ b/azure-pipelines.asyncrx.yml
@@ -0,0 +1,117 @@
+trigger:
+ branches:
+ include:
+ - main
+ - rel/*
+ paths:
+ include:
+ - AsyncRx.NET/*
+ - .editorconfig
+ - azure-pipelines.asyncrx.yml
+
+pr:
+ branches:
+ include:
+ - main
+ - rel/*
+ paths:
+ include:
+ - AsyncRx.NET/*
+ - .editorconfig
+ - azure-pipelines.asyncrx.yml
+
+stages:
+- stage: Build
+ jobs:
+ - job: Build
+ pool:
+ vmImage: windows-latest
+
+ variables:
+ BuildConfiguration: Release
+ BuildPlatform: Any CPU
+ DOTNET_SKIP_FIRST_TIME_EXPERIENCE: true
+
+ steps:
+ - task: UseDotNet@2
+ displayName: Use .NET Core 7.0.x SDK
+ inputs:
+ version: 7.0.x
+ performMultiLevelLookup: true
+
+ - task: DotNetCoreCLI@2
+ inputs:
+ command: custom
+ custom: tool
+ arguments: install --tool-path . nbgv
+ displayName: Install NBGV tool
+
+ - script: nbgv cloud -a -p AsyncRx.NET
+ displayName: Set Version
+
+ - task: MSBuild@1
+ displayName: Build AsyncRx.NET.sln
+ inputs:
+ solution: AsyncRx.NET/AsyncRx.NET.sln
+ msbuildArguments: /restore /t:build /p:CreatePackage=true /p:NoPackageAnalysis=true /p:PackageOutputPath=$(Build.ArtifactStagingDirectory)\artifacts
+ configuration: $(BuildConfiguration)
+ maximumCpuCount: false
+
+ - task: DotNetCoreCLI@2
+ inputs:
+ command: custom
+ custom: tool
+ arguments: install --tool-path . dotnet-reportgenerator-globaltool
+ displayName: Install ReportGenerator tool
+
+ # Normally we'd run tests here, but AsyncRx.NET doesn't have any yet!
+ # Once we're ready to stablize, we'd also add API surface area tests too
+
+ - publish: AsyncRx.NET/build
+ artifact: config
+ displayName: Publish signing config
+
+ - publish: $(Build.ArtifactStagingDirectory)\artifacts
+ displayName: Publish artifacts
+ artifact: BuildPackages
+
+# Rx.NET has an IntegrationTests stage. Consider this once we have tests
+
+- stage: CodeSign
+ # In Rx, the condition includes:
+ # succeeded('IntegrationTests')
+ condition: not(eq(variables['build.reason'], 'PullRequest'))
+ jobs:
+ - deployment: CodeSign
+ displayName: Code Signing
+ pool:
+ vmImage: windows-latest
+ environment: Code Sign
+ variables:
+ - group: SignClient Credentials
+ strategy:
+ runOnce:
+ deploy:
+ steps:
+ - task: DotNetCoreCLI@2
+ inputs:
+ command: custom
+ custom: tool
+ arguments: install --tool-path . SignClient
+ displayName: Install SignTool tool
+
+ - pwsh: |
+ .\SignClient "Sign" `
+ --baseDirectory "$(Pipeline.Workspace)\BuildPackages" `
+ --input "**/*.nupkg" `
+ --config "$(Pipeline.Workspace)\config\signclient.json" `
+ --user "$(SignClientUser)" `
+ --secret "$(SignClientSecret)" `
+ --name "Rx.NET" `
+ --description "Rx.NET" `
+ --descriptionUrl "https://github.com/dotnet/reactive"
+ displayName: Sign packages
+
+ - publish: $(Pipeline.Workspace)/BuildPackages
+ displayName: Publish Signed Packages
+ artifact: SignedPackages