Browse Source

Update build scripts (#630)

* Update build scripts

* remove typo

* use microsoft sourcelink

* Stamp commit hash into assm

* remove nuget.config

* fix negation

* update xunit

* Split api tests into diff step

* target 16299 on tests

* Ignore attributes that are stamped on

* Remove old file
Oren Novotny 7 years ago
parent
commit
231bd4e300

+ 21 - 33
.vsts.rx-ci.yml

@@ -1,6 +1,14 @@
 trigger:
-- master
-- rel/*
+  branches:
+    include:
+      - master
+      - rel/*
+  paths:
+    include:
+      - Rx.NET/Source/*
+      - .editorconfig
+      - .vsts.rx-ci.yml
+      - .vsts.rx-shared.yml
 
 queue: Hosted VS2017
 
@@ -9,34 +17,14 @@ variables:
   BuildPlatform: Any CPU
     
 steps:
-- task: BatchScript@1
-  inputs:
-    filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
-    arguments: -no_logo
-    modifyEnvironment: true
-  displayName: Setup Environment Variables
-
-- task: DotNetCoreCLI@2
-  inputs:
-    command: build
-    projects: Rx.NET/Source/build/setversion.csproj
-    arguments: -c $(BuildConfiguration)   
-  displayName: Set Version
-   
-- task: PowerShell@1
-  inputs:
-    scriptName: 'Rx.NET/Source/build-new.ps1'
-    workingFolder: 'Rx.NET/Source'
-  env:
-    VSTS_ACCESS_TOKEN: $(System.AccessToken)
-    SignClientUser: $(SignClientUser)
-    SignClientSecret: $(SignClientSecret)
-    COVERALLS_REPO_TOKEN: $(CoverallsToken)
-  displayName: Build
-
-- task: PublishBuildArtifacts@1
-  inputs:
-    PathtoPublish: 'Rx.NET/Source/artifacts'
-    ArtifactName: artifacts
-    publishLocation: Container
-  condition: always()
+- template: .vsts.rx-shared.yml
+  parameters:
+    signStep:
+    - task: PowerShell@2
+      displayName: Authenticode Sign Packages
+      inputs:
+        filePath: Rx.NET/Source/build/Sign-Package.ps1
+      env:
+        SignClientUser: $(SignClientUser)
+        SignClientSecret: $(SignClientSecret)
+        ArtifactDirectory: $(Build.ArtifactStagingDirectory)\artifacts

+ 1 - 21
.vsts.rx-pr.yml

@@ -6,24 +6,4 @@ variables:
   BuildPlatform: Any CPU
     
 steps:
-- task: BatchScript@1
-  inputs:
-    filename: "C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Enterprise\\Common7\\Tools\\VsDevCmd.bat"
-    arguments: -no_logo
-    modifyEnvironment: true
-  displayName: Setup Environment Variables
-    
-- task: PowerShell@1
-  inputs:
-    scriptName: 'Rx.NET/Source/build-new.ps1'
-    workingFolder: 'Rx.NET/Source'
-  env:
-    VSTS_ACCESS_TOKEN: $(System.AccessToken)
-  displayName: Build
-
-- task: PublishBuildArtifacts@1
-  inputs:
-    PathtoPublish: 'Rx.NET/Source/artifacts'
-    ArtifactName: artifacts
-    publishLocation: Container
-  condition: eq(variables['system.pullrequest.isfork'], false)
+- template: .vsts.rx-shared.yml

+ 70 - 0
.vsts.rx-shared.yml

@@ -0,0 +1,70 @@
+parameters: 
+  signStep: []
+    
+steps:
+- task: DotNetCoreInstaller@0
+  inputs:
+    version: '2.1.400-preview-008975'
+
+- task: NuGetToolInstaller@0
+  displayName: Use NuGet 4.7.0
+  inputs:
+    versionSpec: 4.7.0
+
+- task: DotNetCoreCLI@2
+  inputs:
+    command: build
+    projects: Rx.NET/Source/build/setversion.csproj
+    arguments: -c $(BuildConfiguration)   
+  displayName: Set Version
+  condition: eq(variables['system.pullrequest.isfork'], false)
+
+- task: VSBuild@1
+  displayName: Build System.Reactive.sln
+  inputs:
+    solution: Rx.NET/Source/System.Reactive.sln
+    vsVersion: 15.0
+    msbuildArgs: /restore /t:build /p:CreatePackage=true /p:NoPackageAnalysis=true /p:PackageOutputPath=$(Build.ArtifactStagingDirectory)\artifacts
+    platform: $(BuildPlatform)
+    configuration: $(BuildConfiguration)
+    maximumCpuCount: true
+
+- task: NuGetCommand@2
+  displayName: Pack compatibility package
+  inputs:
+    command: custom
+    arguments: pack Rx.NET/Source/facades/System.Reactive.Compatibility.nuspec -Version $(NBGV_NuGetPackageVersion) -MinClientVersion 2.12 -NoPackageAnalysis -outputdirectory $(Build.ArtifactStagingDirectory)\artifacts
+  condition: eq(variables['system.pullrequest.isfork'], false)
+
+- task: VSBuild@1
+  displayName: Build for Test (ppdb) workaround
+  inputs:
+    solution: Rx.NET/Source/System.Reactive.sln
+    vsVersion: 15.0
+    msbuildArgs: /t:build /p:DebugType=portable
+    platform: $(BuildPlatform)
+    configuration: $(BuildConfiguration)
+    maximumCpuCount: true
+
+- task: DotNetCoreCLI@2
+  inputs:
+    command: test
+    projects: Rx.NET/Source/tests/Tests.System.Reactive/*.csproj
+    arguments: -c $(BuildConfiguration) --no-build --no-restore --filter "SkipCI!=true" --collect:"Code Coverage" -s $(System.DefaultWorkingDirectory)/Rx.NET/Source/CodeCoverage.runsettings
+  displayName: Run Unit Tests
+
+- task: DotNetCoreCLI@2
+  inputs:
+    command: test
+    projects: Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Tests.System.Reactive.ApiApprovals.csproj
+    arguments: -c $(BuildConfiguration) --no-build --no-restore 
+  displayName: Run Api Approvals Tests
+  
+- ${{ parameters.signStep }}
+
+- task: PublishBuildArtifacts@1
+  inputs:
+    PathtoPublish: $(Build.ArtifactStagingDirectory)\artifacts
+    ArtifactName: artifacts
+    publishLocation: Container
+  condition: eq(variables['system.pullrequest.isfork'], false)

+ 34 - 0
Rx.NET/Source/CodeCoverage.runsettings

@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- File name extension must be .runsettings -->
+<RunSettings>
+  <DataCollectionRunSettings>
+    <DataCollectors>
+      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+        <Configuration>
+          <CodeCoverage>
+
+            <!--  
+About include/exclude lists:  
+Empty "Include" clauses imply all; empty "Exclude" clauses imply none.  
+Each element in the list is a regular expression (ECMAScript syntax). See http://msdn.microsoft.com/library/2k3te2cs.aspx.  
+An item must first match at least one entry in the include list to be included.  
+Included items must then not match any entries in the exclude list to remain included.  
+-->
+
+            <!-- Match assembly file paths: -->
+            <ModulePaths>
+              <Include>
+                <ModulePath>.*System\.Reactive.*\.dll$</ModulePath>
+                <ModulePath>.*Microsoft\.Reactive.*\.dll$</ModulePath>
+              </Include>
+              <Exclude>
+                <ModulePath>.*Tests.*</ModulePath>
+              </Exclude>
+            </ModulePaths>
+
+          </CodeCoverage>
+        </Configuration>
+      </DataCollector>
+    </DataCollectors>
+  </DataCollectionRunSettings>
+</RunSettings>

+ 12 - 1
Rx.NET/Source/Directory.build.props

@@ -19,14 +19,25 @@
     <CodeAnalysisRuleSet>$(MSBuildThisFileDirectory)Rx.ruleset</CodeAnalysisRuleSet>
     <GeneratePackageOnBuild Condition=" '$(IsTestProject)' != 'true' and '$(CreatePackage)' == 'true' ">true</GeneratePackageOnBuild>
     <PackageOutputPath>$(MSBuildThisFileDirectory)artifacts</PackageOutputPath>
+    <EmbedUntrackedSources>true</EmbedUntrackedSources>
+    <PublishRepositoryUrl>true</PublishRepositoryUrl>
   </PropertyGroup>
   
   <ItemGroup Condition="'$(IsTestProject)' != 'true' and '$(SourceLinkEnabled)' != 'false'">
-    <PackageReference Include="SourceLink.Create.CommandLine" Version="2.8.0" PrivateAssets="All" />
+    <PackageReference Include="Microsoft.SourceLink.GitHub" Version="1.0.0-beta-62925-02" PrivateAssets="All"/>
   </ItemGroup>   
   
   <ItemGroup>
     <PackageReference Include="Nerdbank.GitVersioning" Version="2.1.23" PrivateAssets="all" />
   </ItemGroup>
 
+  <Target Name="AddCommitHashToAssemblyAttributes" BeforeTargets="GetAssemblyAttributes">
+    <ItemGroup>
+      <AssemblyAttribute Include="System.Reflection.AssemblyMetadataAttribute" Condition=" '$(SourceRevisionId)' != '' ">
+        <_Parameter1>CommitHash</_Parameter1>
+        <_Parameter2>$(SourceRevisionId)</_Parameter2>
+      </AssemblyAttribute>
+    </ItemGroup>
+  </Target>
+
 </Project>

+ 0 - 8
Rx.NET/Source/NuGet.Config

@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<configuration>
-  <packageSources>
-    <add key="xUnit CI" value="https://www.myget.org/F/xunit/api/v3/index.json" />
-    <add key="Build Packages" value="https://www.myget.org/F/c037199d-41df-4567-b966-25ff65324688/api/v3/index.json" />
-    <add key="NuGet.org" value="https://api.nuget.org/v3/index.json" />
-  </packageSources>
-</configuration>

+ 3 - 1
Rx.NET/Source/System.Reactive.sln

@@ -15,7 +15,9 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests.System.Reactive.Uwp.D
 EndProject
 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{870348D0-C0A0-4352-8A02-E00AB0CCB919}"
 	ProjectSection(SolutionItems) = preProject
-		build-new.ps1 = build-new.ps1
+		..\..\.vsts.rx-ci.yml = ..\..\.vsts.rx-ci.yml
+		..\..\.vsts.rx-pr.yml = ..\..\.vsts.rx-pr.yml
+		..\..\.vsts.rx-shared.yml = ..\..\.vsts.rx-shared.yml
 		Directory.build.props = Directory.build.props
 		Directory.build.targets = Directory.build.targets
 		global.json = global.json

+ 0 - 117
Rx.NET/Source/build-new.ps1

@@ -1,117 +0,0 @@
-$scriptPath = split-path -parent $MyInvocation.MyCommand.Definition
-
-$configuration = $Env:BuildConfiguration
-
-$isCloudBuild = Test-Path -Path env:\TF_BUILD
-$outputLocation = Join-Path $scriptPath "testResults"
-$openCoverPath = ".\packages\OpenCover\tools\OpenCover.Console.exe"
-$rootPath = (Resolve-Path .).Path
-$artifacts = Join-Path $rootPath "artifacts"
-
-$signClientSettings = Join-Path (Join-Path (Get-Item $scriptPath).Parent.Parent.FullName "scripts") "SignClientSettings.json"
-$hasSignClientSecret = !([string]::IsNullOrEmpty($env:SignClientSecret))
-$signClientAppPath = ".\packages\SignClient\tools\netcoreapp2.0\SignClient.dll"
-
-#remove any old coverage file
-md -Force $outputLocation | Out-Null
-$outputPath = (Resolve-Path $outputLocation).Path
-$outputFile = Join-Path $outputPath -childpath 'coverage-rx.xml'
-Remove-Item $outputPath -Force -Recurse
-md -Force $outputLocation | Out-Null
-
-if (!(Test-Path .\nuget.exe)) {
-    wget "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" -outfile .\nuget.exe
-}
-
-# get tools
-.\nuget.exe install -excludeversion SignClient -Version 0.9.1 -outputdirectory packages
-.\nuget.exe install -excludeversion JetBrains.dotCover.CommandLineTools -version 2017.3.5 -outputdirectory packages
-.\nuget.exe install -excludeversion Nerdbank.GitVersioning -Version 2.1.23 -outputdirectory packages
-#.\nuget.exe install -excludeversion OpenCover -Version 4.6.519 -outputdirectory packages
-.\nuget.exe install -excludeversion ReportGenerator -outputdirectory packages
-#.\nuget.exe install -excludeversion coveralls.io -outputdirectory packages
-.\nuget.exe install -excludeversion coveralls.io.dotcover -outputdirectory packages
-
-#update version
-$versionObj = .\packages\Nerdbank.GitVersioning\tools\get-version.ps1
-$packageSemVer = $versionObj.NuGetPackageVersion
-
-Write-Host "Building $packageSemVer" -Foreground Green
-
-New-Item -ItemType Directory -Force -Path $artifacts
-
-Write-Host "Building $scriptPath\System.Reactive.sln" -Foreground Green
-msbuild "$scriptPath\System.Reactive.sln" /restore /t:build /m /p:Configuration=$configuration /p:CreatePackage=true /p:NoPackageAnalysis=true 
-if ($LastExitCode -ne 0) { 
-        Write-Host "Error with build" -Foreground Red
-        if($isCloudBuild) {
-          $host.SetShouldExit($LastExitCode)
-          exit $LastExitCode
-        }  
-}
-
-
-Write-Host "Building Compat Package" -Foreground Green
-
-.\nuget.exe pack "$scriptPath\facades\System.Reactive.Compatibility.nuspec" -Version $packageSemVer -MinClientVersion 2.12 -nopackageanalysis -outputdirectory "$artifacts" 
-
-if($hasSignClientSecret) {
-  Write-Host "Signing Packages" -Foreground Green
-  $nupgks = ls $artifacts\*React*.nupkg | Select -ExpandProperty FullName
-
-  foreach ($nupkg in $nupgks) {
-    Write-Host "Submitting $nupkg for signing"
-
-    dotnet $signClientAppPath 'sign' -c $signClientSettings -i $nupkg -r $env:SignClientUser -s $env:SignClientSecret -n 'Rx.NET' -d 'Reactive Extensions for .NET' -u 'http://reactivex.io/' 
-
-    if ($LastExitCode -ne 0) { 
-        Write-Host "Error signing $nupkg" -Foreground Red
-        if($isCloudBuild) {
-          $host.SetShouldExit($LastExitCode)
-          exit $LastExitCode
-        }  
-    }
-    Write-Host "Finished signing $nupkg"
-  }
-
-} else {
-  Write-Host "Client Secret not found, not signing packages"
-}
-
-Write-Host "Running tests" -Foreground Green
-$testDirectory = Join-Path $scriptPath "tests\Tests.System.Reactive"
-
-# OpenCover isn't working currently. So run tests on CI and coverage with JetBrains 
-
-$dotnet = "$env:ProgramFiles\dotnet\dotnet.exe"
-.\packages\JetBrains.dotCover.CommandLineTools\tools\dotCover.exe analyse /targetexecutable="$dotnet" /targetworkingdir="$testDirectory" /targetarguments="test -c $configuration --no-build --no-restore --filter `"SkipCI!=true`"" /Filters="+:module=System.Reactive;+:module=Microsoft.Reactive.Testing;+:module=System.Reactive.Observable.Aliases;-:type=Xunit*" /DisableDefaultFilters /ReturnTargetExitCode /AttributeFilters="System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute" /Output="$outputFile" /ReportType=DetailedXML /HideAutoProperties
-#dotnet test $testDirectory --no-build --no-restore -c "Release" --filter "SkipCI!=true"
-
-if ($LastExitCode -ne 0) { 
-	Write-Host "Error with tests" -Foreground Red
-	if($isCloudBuild) {
-	  $host.SetShouldExit($LastExitCode)
-	  exit $LastExitCode
-	}  
-}
-
-& dotnet test tests\Tests.System.Reactive.ApiApprovals\Tests.System.Reactive.ApiApprovals.csproj -c $configuration --no-build --no-restore 
-
-if ($LastExitCode -ne 0) { 
-	Write-Host "Error with API approval tests" -Foreground Red
-	if($isCloudBuild) {
-	  $host.SetShouldExit($LastExitCode)
-	  exit $LastExitCode
-	}  
-}
-
-# Either display or publish the results
-if ($isCloudBuild -eq 'True')
-{
-  .\packages\coveralls.io.dotcover\tools\coveralls.net.exe -f -p DotCover "$outputFile"
-}
-else
-{
-  .\packages\ReportGenerator\tools\ReportGenerator.exe -reports:"$outputFile" -targetdir:"$outputPath"
-  &"$outPutPath/index.htm"
-}

+ 26 - 0
Rx.NET/Source/build/Sign-Package.ps1

@@ -0,0 +1,26 @@
+
+$currentDirectory = split-path $MyInvocation.MyCommand.Definition
+
+# See if we have the ClientSecret available
+if([string]::IsNullOrEmpty($Env:SignClientSecret)){
+	Write-Host "Client Secret not found, not signing packages"
+	return;
+}
+
+dotnet tool install --tool-path . SignClient
+
+# Setup Variables we need to pass into the sign client tool
+
+$appSettings = "$currentDirectory\appsettings.json"
+
+$nupkgs = gci $Env:ArtifactDirectory\*.nupkg -recurse | Select -ExpandProperty FullName
+
+foreach ($nupkg in $nupkgs){
+	Write-Host "Submitting $nupkg for signing"
+
+	.\SignClient 'sign' -c $appSettings -i $nupkg -r $Env:SignClientUser -s $Env:SignClientSecret -n 'Rx.NET' -d 'Rx.NET' -u 'https://github.com/dotnet/reactive' 
+
+	Write-Host "Finished signing $nupkg"
+}
+
+Write-Host "Sign-package complete"

+ 13 - 0
Rx.NET/Source/build/appsettings.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"
+    }
+  }
+}

+ 3 - 1
Rx.NET/Source/build/version.json

@@ -3,6 +3,8 @@
   "cloudBuild": {
     "buildNumber": {
       "enabled": true
-    }
+    },
+    "setVersionVariables": true,
+    "setAllVariables": true
   }
 }

+ 18 - 1
Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Api/ApiApprovalTests.cs

@@ -5,12 +5,15 @@
 using ApprovalTests;
 using ApprovalTests.Reporters;
 using PublicApiGenerator;
+using System;
+using System.Linq;
 using System.Reflection;
 using Xunit;
 
 namespace ReactiveTests.Tests.Api
 {
     [UseReporter(typeof(DiffReporter))]
+    [IgnoreLineEndings(true)]
     public class ApiApprovalTests
     {
         [Fact]
@@ -37,7 +40,21 @@ namespace ReactiveTests.Tests.Api
         string GeneratePublicApi(Assembly assembly)
         {
             var namespacePrefixWhitelist = new[] { "System", "Microsoft" };
-            return ApiGenerator.GeneratePublicApi(assembly, whitelistedNamespacePrefixes: namespacePrefixWhitelist);
+            return Filter(ApiGenerator.GeneratePublicApi(assembly, whitelistedNamespacePrefixes: namespacePrefixWhitelist));
+        }
+
+        static string Filter(string text)
+        {
+            return string.Join(Environment.NewLine, text.Split(new[]
+                                                        {
+                                                            Environment.NewLine
+                                                        }, StringSplitOptions.RemoveEmptyEntries)
+                                                        .Where(l => !l.StartsWith("[assembly: AssemblyVersion("))
+                                                        .Where(l => !l.StartsWith("[assembly: AssemblyFileVersion("))
+                                                        .Where(l => !l.StartsWith("[assembly: AssemblyInformationalVersion("))
+                                                        .Where(l => !l.StartsWith("[assembly: System.Reflection.AssemblyMetadataAttribute(\"CommitHash\""))
+                                                        .Where(l => !string.IsNullOrWhiteSpace(l))
+            );
         }
     }
 }

+ 1 - 1
Rx.NET/Source/tests/Tests.System.Reactive.ApiApprovals/Tests.System.Reactive.ApiApprovals.csproj

@@ -21,7 +21,7 @@
   </ItemGroup>
 
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.2" />
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0-preview-20180610-02" />
     <PackageReference Include="xunit" Version="2.4.0-beta.2.build4010" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0-beta.2.build4010" />
     <PackageReference Include="ApprovalTests" Version="3.0.14" />

+ 13 - 15
Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/Tests.System.Reactive.Uwp.DeviceRunner.csproj

@@ -11,13 +11,13 @@
     <AssemblyName>Tests.System.Reactive.Uwp.DeviceRunner</AssemblyName>
     <DefaultLanguage>en-US</DefaultLanguage>
     <TargetPlatformIdentifier>UAP</TargetPlatformIdentifier>
-    <TargetPlatformVersion>10.0.16299.0</TargetPlatformVersion>
-    <TargetPlatformMinVersion>10.0.15063.0</TargetPlatformMinVersion>
+    <TargetPlatformVersion>10.0.17134.0</TargetPlatformVersion>
+    <TargetPlatformMinVersion>10.0.16299.0</TargetPlatformMinVersion>
     <MinimumVisualStudioVersion>14</MinimumVisualStudioVersion>
     <FileAlignment>512</FileAlignment>
     <ProjectTypeGuids>{A5A43C5B-DE2A-4C0C-9213-0A381AF9435A};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
     <PackageCertificateKeyFile>Tests.System.Reactive.Uwp.DeviceRunner_TemporaryKey.pfx</PackageCertificateKeyFile>
-    <PackageCertificateThumbprint>089EC27AC482FBFAFA90BA9DB8C8C793664FCA3B</PackageCertificateThumbprint>
+    <PackageCertificateThumbprint>2BD466C3AB205824BF42514FF6A6F268A0B60966</PackageCertificateThumbprint>
     <SignAssembly>false</SignAssembly>
   </PropertyGroup>
   <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
@@ -90,9 +90,9 @@
     <UseDotNetNativeToolchain>true</UseDotNetNativeToolchain>
   </PropertyGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.0.8" />
+    <PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.1.5" />
     <PackageReference Include="xunit" Version="2.4.0-beta.2.build4010" />
-    <PackageReference Include="xunit.runner.devices" Version="2.3.3" />
+    <PackageReference Include="xunit.runner.devices" Version="2.4.0-build.27" />
   </ItemGroup>
   <ItemGroup>
     <!-- A reference to the entire .Net Framework and Windows SDK are automatically included -->
@@ -103,17 +103,15 @@
       <Link>xunit.runner.json</Link>
     </None>
   </ItemGroup>
-
   <ItemGroup>
-   <Compile Include="..\Tests.System.Reactive\**\*.cs">
-     <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
-   </Compile>
-   <Compile Remove="..\Tests.System.Reactive\bin\**\*" />
-   <Compile Remove="..\Tests.System.Reactive\obj\**\*" />
-
-   <Compile Include="App.xaml.cs">
-     <DependentUpon>App.xaml</DependentUpon>
-   </Compile>
+    <Compile Include="..\Tests.System.Reactive\**\*.cs">
+      <Link>%(RecursiveDir)%(Filename)%(Extension)</Link>
+    </Compile>
+    <Compile Remove="..\Tests.System.Reactive\bin\**\*" />
+    <Compile Remove="..\Tests.System.Reactive\obj\**\*" />
+    <Compile Include="App.xaml.cs">
+      <DependentUpon>App.xaml</DependentUpon>
+    </Compile>
   </ItemGroup>
   <ItemGroup>
     <AppxManifest Include="Package.appxmanifest">

BIN
Rx.NET/Source/tests/Tests.System.Reactive.Uwp.DeviceRunner/Tests.System.Reactive.Uwp.DeviceRunner_TemporaryKey.pfx


+ 1 - 2
Rx.NET/Source/tests/Tests.System.Reactive/Tests.System.Reactive.csproj

@@ -15,10 +15,9 @@
     <Reference Include="WindowsBase" />
   </ItemGroup>
   <ItemGroup>
-    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.7.2" />    
+    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.8.0-preview-20180610-02" />    
     <PackageReference Include="xunit" Version="2.4.0-beta.2.build4010" />
     <PackageReference Include="xunit.runner.visualstudio" Version="2.4.0-beta.2.build4010" />
-    <DotNetCliToolReference Include="dotnet-xunit" Version="2.4.0-beta.2.build3981" />
     <ProjectReference Include="..\..\src\System.Reactive\System.Reactive.csproj" />
     <ProjectReference Include="..\..\src\System.Reactive.Observable.Aliases\System.Reactive.Observable.Aliases.csproj" />
     <ProjectReference Include="..\..\src\Microsoft.Reactive.Testing\Microsoft.Reactive.Testing.csproj" />