diff --git a/.gitignore b/.gitignore index 00cd02d504..9f7ec8f882 100644 --- a/.gitignore +++ b/.gitignore @@ -235,6 +235,5 @@ $RECYCLE.BIN/ AkavacheSqliteLinkerOverride.cs NuGetBuild WiX.Toolset.DummyFile.txt -nunit-UnitTests.xml -nunit-TrackingCollectionTests.xml +nunit-*.xml GitHubVS.sln.DotSettings diff --git a/Build-Solution.cmd b/Build-Solution.cmd deleted file mode 100644 index 822884e5cc..0000000000 --- a/Build-Solution.cmd +++ /dev/null @@ -1 +0,0 @@ -Powershell -ExecutionPolicy Unrestricted %~dp0Build-Solution.ps1 \ No newline at end of file diff --git a/Build-Solution.ps1 b/Build-Solution.ps1 deleted file mode 100644 index 5e78326dce..0000000000 --- a/Build-Solution.ps1 +++ /dev/null @@ -1,147 +0,0 @@ -param( - [ValidateSet('Full', 'Tests', 'Build', 'Clean')] - [string] - $build = "Build" - , - [ValidateSet('Debug', 'Release')] - [string] - $config = "Release" - , - [ValidateSet('Any CPU', 'x86', 'x64')] - [string] - $platform = "Any CPU" - , - [string] - $verbosity = "minimal" -) - -$rootDirectory = Split-Path $MyInvocation.MyCommand.Path -$projFile = join-path $rootDirectory GitHubVS.msbuild -$msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" - -function Die([string]$message, [object[]]$output) { - if ($output) { - Write-Output $output - $message += ". See output above." - } - Throw (New-Object -TypeName ScriptException -ArgumentList $message) -} - -function Run-Command([scriptblock]$Command, [switch]$Fatal, [switch]$Quiet) { - $output = "" - if ($Quiet) { - $output = & $Command 2>&1 - } else { - & $Command - } - - if (!$Fatal) { - return - } - - $exitCode = 0 - if (!$? -and $LastExitCode -ne 0) { - $exitCode = $LastExitCode - } elseif (!$?) { - $exitCode = 1 - } else { - return - } - - Die "``$Command`` failed" $output -} - -function Run-XUnit([string]$project, [int]$timeoutDuration, [string]$configuration) { - $dll = "src\$project\bin\$configuration\$project.dll" - - $xunitDirectory = Join-Path $rootDirectory packages\xunit.runner.console.2.1.0\tools - $consoleRunner = Join-Path $xunitDirectory xunit.console.x86.exe - $xml = Join-Path $rootDirectory "nunit-$project.xml" - $outputPath = [System.IO.Path]::GetTempFileName() - - $args = $dll, "-noshadow", "-xml", $xml, "-parallel", "all" - [object[]] $output = "$consoleRunner " + ($args -join " ") - - $process = Start-Process -PassThru -NoNewWindow -RedirectStandardOutput $outputPath $consoleRunner ($args | %{ "`"$_`"" }) - Wait-Process -InputObject $process -Timeout $timeoutDuration -ErrorAction SilentlyContinue - if ($process.HasExited) { - $output += Get-Content $outputPath - $exitCode = $process.ExitCode - } else { - $output += "Tests timed out. Backtrace:" - $output += Get-DotNetStack $process.Id - $exitCode = 9999 - } - Stop-Process -InputObject $process - Remove-Item $outputPath - - $result = New-Object System.Object - $result | Add-Member -Type NoteProperty -Name Output -Value $output - $result | Add-Member -Type NoteProperty -Name ExitCode -Value $exitCode - $result -} - -function Run-NUnit([string]$project, [int]$timeoutDuration, [string]$configuration) { - $dll = "src\$project\bin\$configuration\$project.dll" - - $nunitDirectory = Join-Path $rootDirectory packages\NUnit.Runners.2.6.4\tools - $consoleRunner = Join-Path $nunitDirectory nunit-console-x86.exe - $xml = Join-Path $rootDirectory "nunit-$project.xml" - $outputPath = [System.IO.Path]::GetTempFileName() - - $args = "-noshadow", "-xml:$xml", "-framework:net-4.5", "-exclude:Timings", $dll - [object[]] $output = "$consoleRunner " + ($args -join " ") - - $process = Start-Process -PassThru -NoNewWindow -RedirectStandardOutput $outputPath $consoleRunner ($args | %{ "`"$_`"" }) - Wait-Process -InputObject $process -Timeout $timeoutDuration -ErrorAction SilentlyContinue - if ($process.HasExited) { - $output += Get-Content $outputPath - $exitCode = $process.ExitCode - } else { - $output += "Tests timed out. Backtrace:" - $output += Get-DotNetStack $process.Id - $exitCode = 9999 - } - - Stop-Process -InputObject $process - Remove-Item $outputPath - - $result = New-Object System.Object - $result | Add-Member -Type NoteProperty -Name Output -Value $output - $result | Add-Member -Type NoteProperty -Name ExitCode -Value $exitCode - $result -} - -function Build-Solution([string]$solution) { - Run-Command -Fatal { & $msbuild $solution /t:Build /property:Configuration=$config /verbosity:$verbosity /p:VisualStudioVersion=14.0 /p:DeployExtension=false } -} - -Write-Output "Building GitHub for Visual Studio..." -Write-Output "" - -Build-Solution GitHubVs.sln - -$exitCode = 0 - -Write-Output "Running Unit Tests..." -$result = Run-XUnit UnitTests 180 $config -if ($result.ExitCode -eq 0) { - # Print out the test result summary. - Write-Output $result.Output[-1] -} else { - $exitCode = $result.ExitCode - Write-Output $result.Output -} - -Write-Output "Running TrackingCollection Tests..." -$result = Run-NUnit TrackingCollectionTests 180 $config -if ($result.ExitCode -eq 0) { - # Print out the test result summary. - Write-Output $result.Output[-3] -} else { - $exitCode = $result.ExitCode - Write-Output $result.Output -} -Write-Output "" - -exit $exitCode \ No newline at end of file diff --git a/GitHubVS.sln b/GitHubVS.sln index 7f6a1bbe38..5181df1986 100644 --- a/GitHubVS.sln +++ b/GitHubVS.sln @@ -29,30 +29,25 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Submodules", "Submodules", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modules", "Modules", "{8E1F1B4E-AEA2-4AB1-8F73-423A903550A1}" ProjectSection(SolutionItems) = preProject - script\Modules\BuildUtils.psm1 = script\Modules\BuildUtils.psm1 - script\Modules\Debugging.psm1 = script\Modules\Debugging.psm1 - script\Modules\Vsix.psm1 = script\Modules\Vsix.psm1 + scripts\Modules\BuildUtils.psm1 = scripts\Modules\BuildUtils.psm1 + scripts\Modules\Debugging.psm1 = scripts\Modules\Debugging.psm1 + scripts\Modules\Vsix.psm1 = scripts\Modules\Vsix.psm1 EndProjectSection EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Script", "Script", "{7B6C5F8D-14B3-443D-B044-0E209AE12BDF}" +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Scripts", "Scripts", "{7B6C5F8D-14B3-443D-B044-0E209AE12BDF}" ProjectSection(SolutionItems) = preProject .gitattributes = .gitattributes .gitignore = .gitignore - script\Announce.ps1 = script\Announce.ps1 - script\Bootstrap.ps1 = script\Bootstrap.ps1 - build.cmd = build.cmd - script\Bump-Version.ps1 = script\Bump-Version.ps1 - script\cibuild.ps1 = script\cibuild.ps1 - script\common.ps1 = script\common.ps1 - script\Deploy.ps1 = script\Deploy.ps1 - script\Get-CheckedOutBranch.ps1 = script\Get-CheckedOutBranch.ps1 - script\Get-HeadSha1.ps1 = script\Get-HeadSha1.ps1 - script\HubotTell-NativeRoom.ps1 = script\HubotTell-NativeRoom.ps1 + scripts\build.ps1 = scripts\build.ps1 + scripts\Bump-Version.ps1 = scripts\Bump-Version.ps1 + scripts\common.ps1 = scripts\common.ps1 + scripts\Get-CheckedOutBranch.ps1 = scripts\Get-CheckedOutBranch.ps1 + scripts\Get-HeadSha1.ps1 = scripts\Get-HeadSha1.ps1 nuget.config = nuget.config - script\Require-CleanWorkTree.ps1 = script\Require-CleanWorkTree.ps1 - script\Run-NUnit.ps1 = script\Run-NUnit.ps1 - script\Run-XUnit.ps1 = script\Run-XUnit.ps1 - script\Upload-DirectoryToS3.ps1 = script\Upload-DirectoryToS3.ps1 + scripts\Require-CleanWorkTree.ps1 = scripts\Require-CleanWorkTree.ps1 + scripts\Run-NUnit.ps1 = scripts\Run-NUnit.ps1 + scripts\Run-Tests.ps1 = scripts\Run-Tests.ps1 + scripts\Run-XUnit.ps1 = scripts\Run-XUnit.ps1 EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{8A7DA2E7-262B-4581-807A-1C45CE79CDFD}" @@ -93,8 +88,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Splat-Portable", "submodule EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CredentialManagement", "src\CredentialManagement\CredentialManagement.csproj", "{41A47C5B-C606-45B4-B83C-22B9239E4DA0}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ReactiveUI.Testing_Net45", "submodules\reactiveui\ReactiveUI.Testing\ReactiveUI.Testing_Net45.csproj", "{DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}" -EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "TrackingCollectionTests", "src\TrackingCollectionTests\TrackingCollectionTests.csproj", "{7B835A7D-CF94-45E8-B191-96F5A4FE26A8}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "GitHub.TeamFoundation.14", "src\GitHub.TeamFoundation.14\GitHub.TeamFoundation.14.csproj", "{161DBF01-1DBF-4B00-8551-C5C00F26720D}" @@ -114,354 +107,302 @@ EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU - Debug|x86 = Debug|x86 - Publish|Any CPU = Publish|Any CPU - Publish|x86 = Publish|x86 + DebugCodeAnalysis|Any CPU = DebugCodeAnalysis|Any CPU + DebugWithoutVsix|Any CPU = DebugWithoutVsix|Any CPU Release|Any CPU = Release|Any CPU - Release|x86 = Release|x86 + ReleaseWithoutVsix|Any CPU = ReleaseWithoutVsix|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Debug|Any CPU.Build.0 = Debug|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Debug|x86.ActiveCfg = Debug|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Debug|x86.Build.0 = Debug|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Publish|x86.ActiveCfg = Release|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Publish|x86.Build.0 = Release|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.DebugWithoutVsix|Any CPU.ActiveCfg = DebugWithoutVsix|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.DebugWithoutVsix|Any CPU.Build.0 = DebugWithoutVsix|Any CPU {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Release|Any CPU.ActiveCfg = Release|Any CPU {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Release|Any CPU.Build.0 = Release|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Release|x86.ActiveCfg = Release|Any CPU - {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.Release|x86.Build.0 = Release|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.ReleaseWithoutVsix|Any CPU.ActiveCfg = ReleaseWithoutVsix|Any CPU + {11569514-5AE5-4B5B-92A2-F10B0967DE5F}.ReleaseWithoutVsix|Any CPU.Build.0 = ReleaseWithoutVsix|Any CPU {596595A6-2A3C-469E-9386-9E3767D863A5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {596595A6-2A3C-469E-9386-9E3767D863A5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Debug|x86.ActiveCfg = Debug|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Debug|x86.Build.0 = Debug|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Publish|x86.ActiveCfg = Release|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Publish|x86.Build.0 = Release|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.DebugCodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.DebugCodeAnalysis|Any CPU.Build.0 = Debug|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {596595A6-2A3C-469E-9386-9E3767D863A5}.Release|Any CPU.ActiveCfg = Release|Any CPU {596595A6-2A3C-469E-9386-9E3767D863A5}.Release|Any CPU.Build.0 = Release|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Release|x86.ActiveCfg = Release|Any CPU - {596595A6-2A3C-469E-9386-9E3767D863A5}.Release|x86.Build.0 = Release|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {596595A6-2A3C-469E-9386-9E3767D863A5}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {346384DD-2445-4A28-AF22-B45F3957BD89}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {346384DD-2445-4A28-AF22-B45F3957BD89}.Debug|Any CPU.Build.0 = Debug|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Debug|x86.ActiveCfg = Debug|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Debug|x86.Build.0 = Debug|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Publish|x86.ActiveCfg = Release|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Publish|x86.Build.0 = Release|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {346384DD-2445-4A28-AF22-B45F3957BD89}.Release|Any CPU.ActiveCfg = Release|Any CPU {346384DD-2445-4A28-AF22-B45F3957BD89}.Release|Any CPU.Build.0 = Release|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Release|x86.ActiveCfg = Release|Any CPU - {346384DD-2445-4A28-AF22-B45F3957BD89}.Release|x86.Build.0 = Release|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {346384DD-2445-4A28-AF22-B45F3957BD89}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Debug|x86.ActiveCfg = Debug|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Debug|x86.Build.0 = Debug|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Publish|x86.ActiveCfg = Release|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Publish|x86.Build.0 = Release|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Release|Any CPU.ActiveCfg = Release|Any CPU {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Release|Any CPU.Build.0 = Release|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Release|x86.ActiveCfg = Release|Any CPU - {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.Release|x86.Build.0 = Release|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {158B05E8-FDBC-4D71-B871-C96E28D5ADF5}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Debug|x86.ActiveCfg = Debug|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Debug|x86.Build.0 = Debug|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Publish|x86.ActiveCfg = Release|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Publish|x86.Build.0 = Release|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Release|Any CPU.ActiveCfg = Release|Any CPU {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Release|Any CPU.Build.0 = Release|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Release|x86.ActiveCfg = Release|Any CPU - {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.Release|x86.Build.0 = Release|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {6AFE2E2D-6DB0-4430-A2EA-F5F5388D2F78}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Debug|Any CPU.Build.0 = Debug|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Debug|x86.ActiveCfg = Debug|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Debug|x86.Build.0 = Debug|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Publish|x86.ActiveCfg = Release|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Publish|x86.Build.0 = Release|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Release|Any CPU.ActiveCfg = Release|Any CPU {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Release|Any CPU.Build.0 = Release|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Release|x86.ActiveCfg = Release|Any CPU - {6559E128-8B40-49A5-85A8-05565ED0C7E3}.Release|x86.Build.0 = Release|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {6559E128-8B40-49A5-85A8-05565ED0C7E3}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Debug|Any CPU.Build.0 = Debug|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Debug|x86.ActiveCfg = Debug|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Debug|x86.Build.0 = Debug|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Publish|x86.ActiveCfg = Release|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Publish|x86.Build.0 = Release|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Release|Any CPU.ActiveCfg = Release|Any CPU {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Release|Any CPU.Build.0 = Release|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Release|x86.ActiveCfg = Release|Any CPU - {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.Release|x86.Build.0 = Release|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {1A1DA411-8D1F-4578-80A6-04576BEA2DC5}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Debug|x86.ActiveCfg = Debug|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Debug|x86.Build.0 = Debug|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Publish|x86.ActiveCfg = Release|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Publish|x86.Build.0 = Release|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Release|Any CPU.ActiveCfg = Release|Any CPU {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Release|Any CPU.Build.0 = Release|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Release|x86.ActiveCfg = Release|Any CPU - {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.Release|x86.Build.0 = Release|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {9AEA02DB-02B5-409C-B0CA-115D05331A6B}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Debug|x86.ActiveCfg = Debug|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Debug|x86.Build.0 = Debug|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Publish|x86.ActiveCfg = Release|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Publish|x86.Build.0 = Release|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Release|Any CPU.ActiveCfg = Release|Any CPU {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Release|Any CPU.Build.0 = Release|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Release|x86.ActiveCfg = Release|Any CPU - {B389ADAF-62CC-486E-85B4-2D8B078DF763}.Release|x86.Build.0 = Release|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {B389ADAF-62CC-486E-85B4-2D8B078DF763}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Debug|Any CPU.Build.0 = Debug|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Debug|x86.ActiveCfg = Debug|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Debug|x86.Build.0 = Debug|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Publish|x86.ActiveCfg = Release|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Publish|x86.Build.0 = Release|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Release|Any CPU.ActiveCfg = Release|Any CPU {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Release|Any CPU.Build.0 = Release|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Release|x86.ActiveCfg = Release|Any CPU - {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.Release|x86.Build.0 = Release|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {E4ED0537-D1D9-44B6-9212-3096D7C3F7A1}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Debug|x86.ActiveCfg = Debug|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Debug|x86.Build.0 = Debug|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Publish|x86.ActiveCfg = Release|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Publish|x86.Build.0 = Release|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.DebugCodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.DebugCodeAnalysis|Any CPU.Build.0 = Debug|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Release|Any CPU.ActiveCfg = Release|Any CPU {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Release|Any CPU.Build.0 = Release|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Release|x86.ActiveCfg = Release|Any CPU - {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.Release|x86.Build.0 = Release|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {B1F5C227-456F-437D-BD5F-4C11B7A8D1A0}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {08DD4305-7787-4823-A53F-4D0F725A07F3}.Debug|Any CPU.ActiveCfg = Release|Any CPU {08DD4305-7787-4823-A53F-4D0F725A07F3}.Debug|Any CPU.Build.0 = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Debug|x86.ActiveCfg = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Debug|x86.Build.0 = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Publish|x86.ActiveCfg = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Publish|x86.Build.0 = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {08DD4305-7787-4823-A53F-4D0F725A07F3}.Release|Any CPU.ActiveCfg = Release|Any CPU {08DD4305-7787-4823-A53F-4D0F725A07F3}.Release|Any CPU.Build.0 = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Release|x86.ActiveCfg = Release|Any CPU - {08DD4305-7787-4823-A53F-4D0F725A07F3}.Release|x86.Build.0 = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {08DD4305-7787-4823-A53F-4D0F725A07F3}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Debug|Any CPU.ActiveCfg = Release|Any CPU {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Debug|Any CPU.Build.0 = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Debug|x86.ActiveCfg = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Debug|x86.Build.0 = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Publish|x86.ActiveCfg = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Publish|x86.Build.0 = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Release|Any CPU.ActiveCfg = Release|Any CPU {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Release|Any CPU.Build.0 = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Release|x86.ActiveCfg = Release|Any CPU - {674B69B8-0780-4D54-AE2B-C15821FA51CB}.Release|x86.Build.0 = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {674B69B8-0780-4D54-AE2B-C15821FA51CB}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Debug|Any CPU.ActiveCfg = Release|Any CPU {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Debug|Any CPU.Build.0 = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Debug|x86.ActiveCfg = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Debug|x86.Build.0 = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Publish|x86.ActiveCfg = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Publish|x86.Build.0 = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Release|Any CPU.ActiveCfg = Release|Any CPU {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Release|Any CPU.Build.0 = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Release|x86.ActiveCfg = Release|Any CPU - {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.Release|x86.Build.0 = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {1CE2D235-8072-4649-BA5A-CFB1AF8776E0}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Debug|Any CPU.ActiveCfg = Release|Any CPU {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Debug|Any CPU.Build.0 = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Debug|x86.ActiveCfg = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Debug|x86.Build.0 = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Publish|x86.ActiveCfg = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Publish|x86.Build.0 = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Release|Any CPU.ActiveCfg = Release|Any CPU {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Release|Any CPU.Build.0 = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Release|x86.ActiveCfg = Release|Any CPU - {600998C4-54DD-4755-BFA8-6F44544D8E2E}.Release|x86.Build.0 = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {600998C4-54DD-4755-BFA8-6F44544D8E2E}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Any CPU.ActiveCfg = Release|Any CPU {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|Any CPU.Build.0 = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|x86.ActiveCfg = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Debug|x86.Build.0 = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Publish|x86.ActiveCfg = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Publish|x86.Build.0 = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Any CPU.ActiveCfg = Release|Any CPU {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|Any CPU.Build.0 = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|x86.ActiveCfg = Release|Any CPU - {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.Release|x86.Build.0 = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {B4E665E5-6CAF-4414-A6E2-8DE1C3BCF203}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Any CPU.ActiveCfg = Release|Any CPU {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|Any CPU.Build.0 = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|x86.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Debug|x86.Build.0 = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Publish|x86.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Publish|x86.Build.0 = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Any CPU.ActiveCfg = Release|Any CPU {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|Any CPU.Build.0 = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|x86.ActiveCfg = Release|Any CPU - {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.Release|x86.Build.0 = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {241C47DF-CA8E-4296-AA03-2C48BB646ABD}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Any CPU.ActiveCfg = Release|Any CPU {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|Any CPU.Build.0 = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|x86.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Debug|x86.Build.0 = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Publish|Any CPU.Build.0 = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Publish|x86.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Publish|x86.Build.0 = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Any CPU.ActiveCfg = Release|Any CPU {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|Any CPU.Build.0 = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|x86.ActiveCfg = Release|Any CPU - {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.Release|x86.Build.0 = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {EB73ADDD-2FE9-44C0-A1AB-20709B979B64}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Debug|Any CPU.ActiveCfg = Release|Any CPU {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Debug|Any CPU.Build.0 = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Debug|x86.ActiveCfg = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Debug|x86.Build.0 = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Publish|x86.ActiveCfg = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Publish|x86.Build.0 = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Release|Any CPU.ActiveCfg = Release|Any CPU {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Release|Any CPU.Build.0 = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Release|x86.ActiveCfg = Release|Any CPU - {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.Release|x86.Build.0 = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {252CE1C2-027A-4445-A3C2-E4D6C80A935A}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Debug|Any CPU.ActiveCfg = Release|Any CPU {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Debug|Any CPU.Build.0 = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Debug|x86.ActiveCfg = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Debug|x86.Build.0 = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Publish|x86.ActiveCfg = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Publish|x86.Build.0 = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.DebugCodeAnalysis|Any CPU.ActiveCfg = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.DebugCodeAnalysis|Any CPU.Build.0 = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.DebugWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.DebugWithoutVsix|Any CPU.Build.0 = Release|Any CPU {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Release|Any CPU.ActiveCfg = Release|Any CPU {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Release|Any CPU.Build.0 = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Release|x86.ActiveCfg = Release|Any CPU - {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.Release|x86.Build.0 = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {0EC8DBA1-D745-4EE5-993A-6026440EC3BF}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Debug|Any CPU.Build.0 = Debug|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Debug|x86.ActiveCfg = Debug|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Debug|x86.Build.0 = Debug|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Publish|Any CPU.Build.0 = Release|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Publish|x86.ActiveCfg = Release|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Publish|x86.Build.0 = Release|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Release|Any CPU.ActiveCfg = Release|Any CPU {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Release|Any CPU.Build.0 = Release|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Release|x86.ActiveCfg = Release|Any CPU - {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.Release|x86.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Debug|Any CPU.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Debug|Any CPU.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Debug|x86.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Debug|x86.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Publish|Any CPU.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Publish|x86.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Publish|x86.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Release|Any CPU.Build.0 = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Release|x86.ActiveCfg = Release|Any CPU - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65}.Release|x86.Build.0 = Release|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {41A47C5B-C606-45B4-B83C-22B9239E4DA0}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Debug|x86.ActiveCfg = Debug|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Debug|x86.Build.0 = Debug|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Publish|Any CPU.Build.0 = Release|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Publish|x86.ActiveCfg = Release|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Publish|x86.Build.0 = Release|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.DebugCodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.DebugCodeAnalysis|Any CPU.Build.0 = Debug|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Release|Any CPU.ActiveCfg = Release|Any CPU {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Release|Any CPU.Build.0 = Release|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Release|x86.ActiveCfg = Release|Any CPU - {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.Release|x86.Build.0 = Release|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {7B835A7D-CF94-45E8-B191-96F5A4FE26A8}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Debug|Any CPU.Build.0 = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Debug|x86.ActiveCfg = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Debug|x86.Build.0 = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Publish|Any CPU.Build.0 = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Publish|x86.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Publish|x86.Build.0 = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Release|Any CPU.ActiveCfg = Release|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Release|Any CPU.Build.0 = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Release|x86.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720D}.Release|x86.Build.0 = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720D}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Debug|Any CPU.Build.0 = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Debug|x86.ActiveCfg = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Debug|x86.Build.0 = Debug|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Publish|Any CPU.Build.0 = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Publish|x86.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Publish|x86.Build.0 = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Release|Any CPU.ActiveCfg = Release|Any CPU {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Release|Any CPU.Build.0 = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Release|x86.ActiveCfg = Release|Any CPU - {161DBF01-1DBF-4B00-8551-C5C00F26720E}.Release|x86.Build.0 = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {161DBF01-1DBF-4B00-8551-C5C00F26720E}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Debug|Any CPU.Build.0 = Debug|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Debug|x86.ActiveCfg = Debug|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Debug|x86.Build.0 = Debug|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Publish|Any CPU.Build.0 = Release|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Publish|x86.ActiveCfg = Release|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Publish|x86.Build.0 = Release|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Release|Any CPU.ActiveCfg = Release|Any CPU {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Release|Any CPU.Build.0 = Release|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Release|x86.ActiveCfg = Release|Any CPU - {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.Release|x86.Build.0 = Release|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {D1DFBB0C-B570-4302-8F1E-2E3A19C41961}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Debug|Any CPU.Build.0 = Debug|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Debug|x86.ActiveCfg = Debug|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Debug|x86.Build.0 = Debug|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Publish|Any CPU.Build.0 = Release|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Publish|x86.ActiveCfg = Release|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Publish|x86.Build.0 = Release|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Release|Any CPU.ActiveCfg = Release|Any CPU {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Release|Any CPU.Build.0 = Release|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Release|x86.ActiveCfg = Release|Any CPU - {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.Release|x86.Build.0 = Release|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {50E277B8-8580-487A-8F8E-5C3B9FBF0F77}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {110B206F-8554-4B51-BF86-94DAA32F5E26}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {110B206F-8554-4B51-BF86-94DAA32F5E26}.Debug|Any CPU.Build.0 = Debug|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Debug|x86.ActiveCfg = Debug|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Debug|x86.Build.0 = Debug|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Publish|Any CPU.Build.0 = Release|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Publish|x86.ActiveCfg = Release|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Publish|x86.Build.0 = Release|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.DebugCodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.DebugCodeAnalysis|Any CPU.Build.0 = Debug|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {110B206F-8554-4B51-BF86-94DAA32F5E26}.Release|Any CPU.ActiveCfg = Release|Any CPU {110B206F-8554-4B51-BF86-94DAA32F5E26}.Release|Any CPU.Build.0 = Release|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Release|x86.ActiveCfg = Release|Any CPU - {110B206F-8554-4B51-BF86-94DAA32F5E26}.Release|x86.Build.0 = Release|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {110B206F-8554-4B51-BF86-94DAA32F5E26}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Debug|x86.ActiveCfg = Debug|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Debug|x86.Build.0 = Debug|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Publish|Any CPU.Build.0 = Release|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Publish|x86.ActiveCfg = Release|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Publish|x86.Build.0 = Release|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.DebugCodeAnalysis|Any CPU.ActiveCfg = DebugCodeAnalysis|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.DebugCodeAnalysis|Any CPU.Build.0 = DebugCodeAnalysis|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Release|Any CPU.ActiveCfg = Release|Any CPU {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Release|Any CPU.Build.0 = Release|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Release|x86.ActiveCfg = Release|Any CPU - {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.Release|x86.Build.0 = Release|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {7F5ED78B-74A3-4406-A299-70CFB5885B8B}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU {17EB676B-BB91-48B5-AA59-C67695C647C2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {17EB676B-BB91-48B5-AA59-C67695C647C2}.Debug|Any CPU.Build.0 = Debug|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Debug|x86.ActiveCfg = Debug|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Debug|x86.Build.0 = Debug|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Publish|Any CPU.ActiveCfg = Release|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Publish|Any CPU.Build.0 = Release|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Publish|x86.ActiveCfg = Release|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Publish|x86.Build.0 = Release|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.DebugCodeAnalysis|Any CPU.ActiveCfg = Debug|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.DebugCodeAnalysis|Any CPU.Build.0 = Debug|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.DebugWithoutVsix|Any CPU.ActiveCfg = Debug|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.DebugWithoutVsix|Any CPU.Build.0 = Debug|Any CPU {17EB676B-BB91-48B5-AA59-C67695C647C2}.Release|Any CPU.ActiveCfg = Release|Any CPU {17EB676B-BB91-48B5-AA59-C67695C647C2}.Release|Any CPU.Build.0 = Release|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Release|x86.ActiveCfg = Release|Any CPU - {17EB676B-BB91-48B5-AA59-C67695C647C2}.Release|x86.Build.0 = Release|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.ReleaseWithoutVsix|Any CPU.ActiveCfg = Release|Any CPU + {17EB676B-BB91-48B5-AA59-C67695C647C2}.ReleaseWithoutVsix|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -482,7 +423,6 @@ Global {1E7F7253-A6AF-43C4-A955-37BEDDA01AF9} = {1E7F7253-A6AF-43C4-A955-37BEDDA01AB8} {252CE1C2-027A-4445-A3C2-E4D6C80A935A} = {1E7F7253-A6AF-43C4-A955-37BEDDA01AF9} {0EC8DBA1-D745-4EE5-993A-6026440EC3BF} = {1E7F7253-A6AF-43C4-A955-37BEDDA01AF9} - {DD99FD0F-82F6-4C30-930E-4A1D0DF01D65} = {1E7F7253-A6AF-43C4-A955-37BEDDA01AB9} {7B835A7D-CF94-45E8-B191-96F5A4FE26A8} = {8A7DA2E7-262B-4581-807A-1C45CE79CDFD} {110B206F-8554-4B51-BF86-94DAA32F5E26} = {8A7DA2E7-262B-4581-807A-1C45CE79CDFD} {17EB676B-BB91-48B5-AA59-C67695C647C2} = {8A7DA2E7-262B-4581-807A-1C45CE79CDFD} diff --git a/README.md b/README.md index abfed8b92f..167ac544d2 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,6 @@ git submodule deinit script git submodule update ``` -Visual Studio extensions have to be signed, so you need to create a signing key with the name `publickey.snk` for your build in the root of the repository: - -```txt -sn -k `publickey.snk` -``` - Open the `GitHubVS.sln` solution with Visual Studio 2015+. To be able to use the GitHub API, you'll need to: @@ -79,32 +73,20 @@ Note, the script will only install in one instance of Visual Studio 2017 (Enterp ## Build Flavors -By default, building will create a VSIX with `Experimental="true"` and `AllUsers="false"` in its `extension.vsixmanifest`. These settings are necessary in order to easily install a standalone VSIX file. There is no need to uninstall the version previously installed via Visual Studio setup / Extensions and Updates. - The following can be executed via `cmd.exe`. To build and install a `Debug` configuration VSIX: ```txt -build.cmd -install.cmd +build.cmd Debug +install.cmd Debug ``` To build and install a `Release` configuration VSIX: ```txt -set Configuration=Release -build.cmd -install.cmd +build.cmd Release +install.cmd Release ``` -To build a VSIX that can be installed via a gallery feed on Extensions and Updates: -```txt -set Configuration=Release -set IsExperimental=false -build.cmd -``` - -Note, attempting to install `IsExperimental=false` builds of the VSIX is not recommended. - ## More information - Andreia Gaita's [presentation](https://www.youtube.com/watch?v=hz2hCO8e_8w) at Codemania 2016 about this extension. diff --git a/appveyor.yml b/appveyor.yml index db567afdef..3a9bcc11b5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,10 +1,9 @@ -version: '{build}' +version: '2.3.5.{build}' +skip_tags: true install: -- ps: >- +- ps: | $full_build = Test-Path env:GHFVS_KEY - git submodule init - git submodule sync if ($full_build) { @@ -17,12 +16,13 @@ install: } git submodule update --recursive --force - nuget restore GitHubVS.sln build_script: -- cmd: msbuild "GitHubVS.sln" /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" /p:Configuration=Release /p:DeployExtension=false /verbosity:minimal /p:VisualStudioVersion=14.0 +- ps: scripts\build.ps1 -AppVeyor -BuildNumber:$env:APPVEYOR_BUILD_NUMBER test_script: -- ps: >- - scripts\Run-Nunit.ps1 TrackingCollectionTests 180 Release -AppVeyor - - scripts\Run-Xunit.ps1 UnitTests 180 Release -AppVeyor \ No newline at end of file +- ps: scripts\test.ps1 -AppVeyor +on_success: +- ps: | + if ($full_build) { + script\Sign-Package -AppVeyor + } diff --git a/build.cmd b/build.cmd index 029ac6b9a4..1a9c2d9951 100644 --- a/build.cmd +++ b/build.cmd @@ -1,8 +1 @@ -@if "%Configuration%" == "" set Configuration=Debug -@if "%IsExperimental%" == "" set IsExperimental=true -@if "%IsProductComponent%" == "" set IsProductComponent=false - -call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\Common7\Tools\VsDevCmd.bat" - -msbuild GitHubVS.sln /t:GitHub_VisualStudio /p:Configuration=%Configuration% /p:IsExperimental=%IsExperimental% /p:IsProductComponent=%IsProductComponent% -@echo Built GitHub.VisualStudio with Configuration=%Configuration% IsExperimental=%IsExperimental% IsProductComponent=%IsProductComponent% +powershell -ExecutionPolicy Unrestricted scripts\build.ps1 %1 diff --git a/install.cmd b/install.cmd index 903730f3a0..4e4cc3f86b 100644 --- a/install.cmd +++ b/install.cmd @@ -1,6 +1,4 @@ -@if "%Configuration%" == "" set Configuration=Debug - +Configuration=%1 @set path=%cd%\tools\VsixUtil;%path% - -vsixutil /install "%cd%\build\%Configuration%\GitHub.VisualStudio.vsix" +tools\VsixUtil\vsixutil /install "build\%Configuration%\GitHub.VisualStudio.vsix" @echo Installed %Configuration% build of GitHub for Visual Studio diff --git a/lib/NUnit.Extension.AppVeyor.NUnit3ResultWriter.0.1.0.nupkg b/lib/NUnit.Extension.AppVeyor.NUnit3ResultWriter.0.1.0.nupkg new file mode 100644 index 0000000000..48ecd310ed Binary files /dev/null and b/lib/NUnit.Extension.AppVeyor.NUnit3ResultWriter.0.1.0.nupkg differ diff --git a/script b/script index ff9ea80d8d..02618c8047 160000 --- a/script +++ b/script @@ -1 +1 @@ -Subproject commit ff9ea80d8df7c33fa94966ce4c8dbbd7896b8a07 +Subproject commit 02618c8047b0dcfd2d83c9a7e5a9c89ce9c97c98 diff --git a/scripts/Bump-Version.ps1 b/scripts/Bump-Version.ps1 new file mode 100644 index 0000000000..33a89cac8c --- /dev/null +++ b/scripts/Bump-Version.ps1 @@ -0,0 +1,92 @@ +<# +.SYNOPSIS + Bumps the version number of GitHub for Visual Studio +.DESCRIPTION + By default, just bumps the last component of the version number by one. An + alternate version number can be specified on the command line. + + The new version number is committed to the local repository and pushed to + GitHub. +#> + +Param( + # It would be nice to use our Validate-Version function here, but we + # can't because this Param definition has to come before any other code in the + # file. + [ValidateScript({ ($_.Major -ge 0) -and ($_.Minor -ge 0) -and ($_.Build -ge 0) })] + [System.Version] + $NewVersion = $null + , + [switch] + $BumpMajor = $false + , + [switch] + $BumpMinor = $false + , + [switch] + $BumpPatch = $false + , + [switch] + $BumpBuild = $false + , + [int] + $BuildNumber = -1 + , + [switch] + $Commit = $false + , + [switch] + $Push = $false + , + [switch] + $Force = $false + , + [switch] + $Trace = $false +) + +Set-StrictMode -Version Latest +if ($Trace) { Set-PSDebug -Trace 1 } + +. $PSScriptRoot\modules.ps1 | out-null +. $scriptsDirectory\Modules\Versioning.ps1 | out-null +. $scriptsDirectory\Modules\Vsix.ps1 | out-null +. $scriptsDirectory\Modules\SolutionInfo.ps1 | out-null +. $scriptsDirectory\Modules\AppVeyor.ps1 | out-null + +if ($NewVersion -eq $null) { + if (!$BumpMajor -and !$BumpMinor -and !$BumpPatch -and !$BumpBuild){ + Die -1 "You need to indicate which part of the version to update via -BumpMajor/-BumpMinor/-BumpPatch/-BumpBuild flags or a custom version via -NewVersion" + } +} + +if ($Push -and !$Commit) { + Die 1 "Cannot push a version bump without -Commit" +} + +if ($Commit -and !$Force){ + Require-CleanWorkTree "bump version" +} + +if (!$?) { + exit 1 +} + +if ($NewVersion -eq $null) { + $currentVersion = Read-Version + $NewVersion = Generate-Version $currentVersion $BumpMajor $BumpMinor $BumpPatch $BumpBuild $BuildNumber +} + +Write-Output "Setting version to $NewVersion" +Write-Version $NewVersion + +if ($Commit) { + Write-Output "Committing version change" + Commit-Version $NewVersion + + if ($Push) { + Write-Output "Pushing version change" + $branch = & $git rev-parse --abbrev-ref HEAD + Push-Changes $branch + } +} diff --git a/scripts/Get-CheckedOutBranch.ps1 b/scripts/Get-CheckedOutBranch.ps1 new file mode 100644 index 0000000000..38a961c2e3 --- /dev/null +++ b/scripts/Get-CheckedOutBranch.ps1 @@ -0,0 +1,31 @@ +<# +.SYNOPSIS + Returns the name of the working directory's currently checked-out branch +#> + +Set-PSDebug -Strict + +$scriptsDirectory = Split-Path $MyInvocation.MyCommand.Path +$rootDirectory = Split-Path $scriptsDirectory + +. $scriptsDirectory\common.ps1 + +function Die([string]$message, [object[]]$output) { + if ($output) { + Write-Output $output + $message += ". See output above." + } + Write-Error $message + exit 1 +} + +$output = & $git symbolic-ref HEAD 2>&1 | %{ "$_" } +if (!$? -or ($LastExitCode -ne 0)) { + Die "Failed to determine current branch" $output +} + +if (!($output -match "^refs/heads/(\S+)$")) { + Die "Failed to determine current branch. HEAD is $output" $output +} + +$matches[1] diff --git a/scripts/Require-CleanWorkTree.ps1 b/scripts/Require-CleanWorkTree.ps1 new file mode 100644 index 0000000000..741a05ab26 --- /dev/null +++ b/scripts/Require-CleanWorkTree.ps1 @@ -0,0 +1,57 @@ +<# +.SYNOPSIS + Ensures the working tree has no uncommitted changes +.PARAMETER Action + The action that requires a clean work tree. This will appear in error messages. +.PARAMETER WarnOnly + When true, warns rather than dies when uncommitted changes are found. +#> + +[CmdletBinding()] +Param( + [ValidateNotNullOrEmpty()] + [string] + $Action + , + [switch] + $WarnOnly = $false +) + +Set-StrictMode -Version Latest +$ErrorActionPreference = "Stop" + +. $PSScriptRoot\modules.ps1 | out-null + +# Based on git-sh-setup.sh:require_clean_work_tree in git.git, but changed not +# to ignore submodules. + +Push-Location $rootDirectory + +Run-Command -Fatal { & $git rev-parse --verify HEAD | Out-Null } + +& $git update-index -q --refresh + +& $git diff-files --quiet +$error = "" +if ($LastExitCode -ne 0) { + $error = "You have unstaged changes." +} + +& $git diff-index --cached --quiet HEAD -- +if ($LastExitCode -ne 0) { + if ($error) { + $error += " Additionally, your index contains uncommitted changes." + } else { + $error = "Your index contains uncommitted changes." + } +} + +if ($error) { + if ($WarnOnly) { + Write-Warning "$error Continuing anyway." + } else { + Die 2 ("Cannot $Action" + ": $error") + } +} + +Pop-Location diff --git a/scripts/Run-NUnit.ps1 b/scripts/Run-NUnit.ps1 index 804696062d..90cc332340 100644 --- a/scripts/Run-NUnit.ps1 +++ b/scripts/Run-NUnit.ps1 @@ -8,55 +8,40 @@ Param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] - $Project, + $BasePathToProject + , + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $Project + , [int] - $TimeoutDuration, + $TimeoutDuration + , [string] - $Configuration, + $Configuration + , [switch] $AppVeyor = $false ) -$rootDirectory = Split-Path (Split-Path $MyInvocation.MyCommand.Path) -Push-Location $rootDirectory -$dll = "src\$Project\bin\$Configuration\$Project.dll" - -if ($AppVeyor) { - $nunitDirectory = Join-Path $rootDirectory packages\NUnit.Runners.2.6.4\tools - $consoleRunner = Join-Path $nunitDirectory nunit-console-x86.exe - $args = "-noshadow", "-framework:net-4.5", "-exclude:Timings", $dll - [object[]] $output = "$consoleRunner " + ($args -join " ") - & $consoleRunner ($args | %{ "`"$_`"" }) - if($LastExitCode -ne 0) { - $host.SetShouldExit($LastExitCode) - } -} else { - $nunitDirectory = Join-Path $rootDirectory packages\NUnit.Runners.2.6.4\tools - $consoleRunner = Join-Path $nunitDirectory nunit-console-x86.exe - - $xml = Join-Path $rootDirectory "nunit-$Project.xml" - $outputPath = [System.IO.Path]::GetTempFileName() +$scriptsDirectory = $PSScriptRoot +$rootDirectory = Split-Path ($scriptsDirectory) +. $scriptsDirectory\modules.ps1 | out-null - $args = "-noshadow", "-xml:$xml", "-framework:net-4.5", "-exclude:Timings", $dll - [object[]] $output = "$consoleRunner " + ($args -join " ") +$dll = "$BasePathToProject\$Project\bin\$Configuration\$Project.dll" +$nunitDirectory = Join-Path $rootDirectory packages\NUnit.ConsoleRunner.3.7.0\tools +$consoleRunner = Join-Path $nunitDirectory nunit3-console.exe +$xml = Join-Path $rootDirectory "nunit-$Project.xml" - $process = Start-Process -PassThru -NoNewWindow -RedirectStandardOutput $outputPath $consoleRunner ($args | %{ "`"$_`"" }) - Wait-Process -InputObject $process -Timeout $TimeoutDuration -ErrorAction SilentlyContinue - if ($process.HasExited) { - $output += Get-Content $outputPath - $exitCode = $process.ExitCode - } else { - $output += "Tests timed out. Backtrace:" - $output += Get-DotNetStack $process.Id - $exitCode = 9999 +& { + Trap { + Write-Output "$Project tests failed" + exit -1 } - Stop-Process -InputObject $process - Remove-Item $outputPath - Pop-Location - - $result = New-Object System.Object - $result | Add-Member -Type NoteProperty -Name Output -Value $output - $result | Add-Member -Type NoteProperty -Name ExitCode -Value $exitCode - $result + Run-Process -Fatal $TimeoutDuration $consoleRunner $dll,"--where ""cat != Timings""","--result=$xml;format=AppVeyor" + if (!$?) { + Die 1 "$Project tests failed" + } } diff --git a/scripts/Run-XUnit.ps1 b/scripts/Run-XUnit.ps1 index 58170208be..b788c6ecc5 100644 --- a/scripts/Run-XUnit.ps1 +++ b/scripts/Run-XUnit.ps1 @@ -8,55 +8,48 @@ Param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string] - $Project, + $BasePathToProject + , + [Parameter(Mandatory=$true)] + [ValidateNotNullOrEmpty()] + [string] + $Project + , [int] - $TimeoutDuration, + $TimeoutDuration + , [string] - $Configuration, + $Configuration + , [switch] $AppVeyor = $false ) -$rootDirectory = Split-Path (Split-Path $MyInvocation.MyCommand.Path) -Push-Location $rootDirectory +$scriptsDirectory = $PSScriptRoot +$rootDirectory = Split-Path ($scriptsDirectory) +. $scriptsDirectory\modules.ps1 | out-null -$dll = "src\$Project\bin\$Configuration\$Project.dll" +$dll = "$BasePathToProject\$Project\bin\$Configuration\$Project.dll" -if ($AppVeyor) { - $xunitDirectory = Join-Path $rootDirectory packages\xunit.runner.console.2.1.0\tools - $consoleRunner = Join-Path $xunitDirectory xunit.console.x86.exe - $args = $dll, "-noshadow", "-parallel", "all", "-appveyor" - [object[]] $output = "$consoleRunner " + ($args -join " ") - & $consoleRunner ($args | %{ "`"$_`"" }) - if($LastExitCode -ne 0) { - $host.SetShouldExit($LastExitCode) - } -} else { - $xunitDirectory = Join-Path $rootDirectory packages\xunit.runner.console.2.1.0\tools - $consoleRunner = Join-Path $xunitDirectory xunit.console.x86.exe - $xml = Join-Path $rootDirectory "nunit-$Project.xml" - $outputPath = [System.IO.Path]::GetTempFileName() +$xunitDirectory = Join-Path $rootDirectory packages\xunit.runner.console.2.3.1\tools\net452 +$consoleRunner = Join-Path $xunitDirectory xunit.console.exe - $args = $dll, "-noshadow", "-xml", $xml, "-parallel", "all" - - [object[]] $output = "$consoleRunner " + ($args -join " ") +& { + Trap { + Write-Output "$Project tests failed" + exit -1 + } - $process = Start-Process -PassThru -NoNewWindow -RedirectStandardOutput $outputPath $consoleRunner ($args | %{ "`"$_`"" }) - Wait-Process -InputObject $process -Timeout $TimeoutDuration -ErrorAction SilentlyContinue - if ($process.HasExited) { - $output += Get-Content $outputPath - $exitCode = $process.ExitCode + $args = @() + if ($AppVeyor) { + $args = $dll, "-noshadow", "-parallel", "all", "-appveyor" } else { - $output += "Tests timed out. Backtrace:" - $output += Get-DotNetStack $process.Id - $exitCode = 9999 + $xml = Join-Path $rootDirectory "nunit-$Project.xml" + $args = $dll, "-noshadow", "-xml", $xml, "-parallel", "all" } - Stop-Process -InputObject $process - Remove-Item $outputPath - Pop-Location - $result = New-Object System.Object - $result | Add-Member -Type NoteProperty -Name Output -Value $output - $result | Add-Member -Type NoteProperty -Name ExitCode -Value $exitCode - $result + Run-Process -Fatal $TimeoutDuration $consoleRunner $args + if (!$?) { + Die 1 "$Project tests failed" + } } diff --git a/scripts/build.ps1 b/scripts/build.ps1 new file mode 100644 index 0000000000..aa44a88934 --- /dev/null +++ b/scripts/build.ps1 @@ -0,0 +1,84 @@ +<# +.SYNOPSIS + Builds and (optionally) runs tests for GitHub for Visual Studio +.DESCRIPTION + Build GHfVS +.PARAMETER Clean + When true, all untracked (and ignored) files will be removed from the work + tree and all submodules. Defaults to false. +.PARAMETER Config + Debug or Release +.PARAMETER RunTests + Runs the tests (defauls to false) +#> +[CmdletBinding()] + +Param( + [switch] + $UpdateSubmodules = $false + , + [switch] + $Clean = $false + , + [ValidateSet('Debug', 'Release')] + [string] + $Config = "Release" + , + [switch] + $Package = $false + , + [switch] + $AppVeyor = $false + , + [switch] + $BumpVersion = $false + , + [int] + $BuildNumber = -1 + , + [switch] + $Trace = $false +) + +Set-StrictMode -Version Latest +if ($Trace) { + Set-PSDebug -Trace 1 +} + +. $PSScriptRoot\modules.ps1 | out-null +$env:PATH = "$scriptsDirectory;$scriptsDirectory\Modules;$env:PATH" + +Import-Module $scriptsDirectory\Modules\Debugging.psm1 +Vsix | out-null + +Push-Location $rootDirectory + +if ($UpdateSubmodules) { + Update-Submodules +} + +if ($Clean) { + Clean-WorkingTree +} + +$fullBuild = Test-Path env:GHFVS_KEY +$publishable = $fullBuild -and $AppVeyor -and ($env:APPVEYOR_PULL_REQUEST_NUMBER -or $env:APPVEYOR_REPO_BRANCH -eq "master") +if ($publishable) { #forcing a deploy flag for CI + $Package = $true + $BumpVersion = $true +} + +if ($BumpVersion) { + Write-Output "Bumping the version" + Bump-Version -BumpBuild -BuildNumber:$BuildNumber +} + +if ($Package) { + Write-Output "Building and packaging GitHub for Visual Studio" +} else { + Write-Output "Building GitHub for Visual Studio" +} + +Build-Solution GitHubVs.sln "Build" $config -Deploy:$Package + +Pop-Location diff --git a/scripts/clearerror.cmd b/scripts/clearerror.cmd new file mode 100644 index 0000000000..9a18480a67 --- /dev/null +++ b/scripts/clearerror.cmd @@ -0,0 +1 @@ +@echo off \ No newline at end of file diff --git a/scripts/common.ps1 b/scripts/common.ps1 new file mode 100644 index 0000000000..3637124792 --- /dev/null +++ b/scripts/common.ps1 @@ -0,0 +1,69 @@ +$scriptsDirectory = Split-Path $MyInvocation.MyCommand.Path +$rootDirectory = Split-Path ($scriptsDirectory) + +function Die([string]$message, [object[]]$output) { + if ($output) { + Write-Output $output + $message += ". See output above." + } + Throw (New-Object -TypeName ScriptException -ArgumentList $message) +} + +if (Test-Path "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe") { + $msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" +} +elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe") { + $msbuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" +} +else { + Die("No suitable msbuild.exe found.") +} + +$git = (Get-Command 'git.exe').Path +if (!$git) { + $git = Join-Path $rootDirectory 'PortableGit\cmd\git.exe' +} +if (!$git) { + throw "Couldn't find installed an git.exe" +} + +$nuget = Join-Path $rootDirectory "tools\nuget\nuget.exe" + +function Create-TempDirectory { + $path = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) + New-Item -Type Directory $path +} + +function Build-Solution([string]$solution,[string]$target,[string]$configuration, [bool]$ForVSInstaller) { + Run-Command -Fatal { & $nuget restore $solution -NonInteractive -Verbosity detailed } + $flag1 = "" + $flag2 = "" + if ($ForVSInstaller) { + $flag1 = "/p:IsProductComponent=true" + $flag2 = "/p:TargetVsixContainer=$rootDirectory\build\vsinstaller\GitHub.VisualStudio.vsix" + new-item -Path $rootDirectory\build\vsinstaller -ItemType Directory -Force | Out-Null + } + + Write-Output "$msbuild $solution /target:$target /property:Configuration=$configuration /p:DeployExtension=false /verbosity:minimal /p:VisualStudioVersion=14.0 $flag1 $flag2" + Run-Command -Fatal { & $msbuild $solution /target:$target /property:Configuration=$configuration /p:DeployExtension=false /verbosity:minimal /p:VisualStudioVersion=14.0 $flag1 $flag2 } +} + +function Push-Changes([string]$branch) { + Push-Location $rootDirectory + + Write-Output "Pushing $Branch to GitHub..." + + Run-Command -Fatal { & $git push origin $branch } + + Pop-Location +} + +Add-Type -AssemblyName "System.Core" +Add-Type -TypeDefinition @" +public class ScriptException : System.Exception +{ + public ScriptException(string message) : base(message) + { + } +} +"@ diff --git a/scripts/modules.ps1 b/scripts/modules.ps1 new file mode 100644 index 0000000000..0116e5fc89 --- /dev/null +++ b/scripts/modules.ps1 @@ -0,0 +1,199 @@ +Add-Type -AssemblyName "System.Core" +Add-Type -TypeDefinition @" +public class ScriptException : System.Exception +{ + public int ExitCode { get; private set; } + public ScriptException(string message, int exitCode) : base(message) + { + this.ExitCode = exitCode; + } +} +"@ + +New-Module -ScriptBlock { + $rootDirectory = Split-Path ($PSScriptRoot) + $scriptsDirectory = Join-Path $rootDirectory "scripts" + $nuget = Join-Path $rootDirectory "tools\nuget\nuget.exe" + Export-ModuleMember -Variable scriptsDirectory,rootDirectory,nuget +} + +New-Module -ScriptBlock { + function Die([int]$exitCode, [string]$message, [object[]]$output) { + #$host.SetShouldExit($exitCode) + if ($output) { + Write-Host $output + $message += ". See output above." + } + $hash = @{ + Message = $message + ExitCode = $exitCode + Output = $output + } + Throw (New-Object -TypeName ScriptException -ArgumentList $message,$exitCode) + #throw $message + } + + + function Run-Command([scriptblock]$Command, [switch]$Fatal, [switch]$Quiet) { + $output = "" + + $exitCode = 0 + + if ($Quiet) { + $output = & $command 2>&1 | %{ "$_" } + } else { + & $command + } + + if (!$? -and $LastExitCode -ne 0) { + $exitCode = $LastExitCode + } elseif ($? -and $LastExitCode -ne 0) { + $exitCode = $LastExitCode + } + + if ($exitCode -ne 0) { + if (!$Fatal) { + Write-Host "``$Command`` failed" $output + } else { + Die $exitCode "``$Command`` failed" $output + } + } + $output + } + + function Run-Process([int]$Timeout, [string]$Command, [string[]]$Arguments, [switch]$Fatal = $false) + { + $args = ($Arguments | %{ "`"$_`"" }) + [object[]] $output = "$Command " + $args + $exitCode = 0 + $outputPath = [System.IO.Path]::GetTempFileName() + $process = Start-Process -PassThru -NoNewWindow -RedirectStandardOutput $outputPath $Command ($args | %{ "`"$_`"" }) + Wait-Process -InputObject $process -Timeout $Timeout -ErrorAction SilentlyContinue + if ($process.HasExited) { + $output += Get-Content $outputPath + $exitCode = $process.ExitCode + } else { + $output += "Tests timed out. Backtrace:" + $output += Get-DotNetStack $process.Id + $exitCode = 9999 + } + Stop-Process -InputObject $process + Remove-Item $outputPath + if ($exitCode -ne 0) { + if (!$Fatal) { + Write-Host "``$Command`` failed" $output + } else { + Die $exitCode "``$Command`` failed" $output + } + } + $output + } + + function Create-TempDirectory { + $path = Join-Path ([System.IO.Path]::GetTempPath()) ([System.IO.Path]::GetRandomFileName()) + New-Item -Type Directory $path + } + + Export-ModuleMember -Function Die,Run-Command,Run-Process,Create-TempDirectory +} + +New-Module -ScriptBlock { + function Find-MSBuild() { + if (Test-Path "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe") { + $msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe" + } + elseif (Test-Path "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe") { + $msbuild = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe" + } + else { + Die("No suitable msbuild.exe found.") + } + $msbuild + } + + function Build-Solution([string]$solution, [string]$target, [string]$configuration, [switch]$ForVSInstaller, [bool]$Deploy = $false) { + Run-Command -Fatal { & $nuget restore $solution -NonInteractive -Verbosity detailed } + $flag1 = "" + $flag2 = "" + if ($ForVSInstaller) { + $flag1 = "/p:IsProductComponent=true" + $flag2 = "/p:TargetVsixContainer=$rootDirectory\build\vsinstaller\GitHub.VisualStudio.vsix" + new-item -Path $rootDirectory\build\vsinstaller -ItemType Directory -Force | Out-Null + } elseif (!$Deploy) { + $configuration += "WithoutVsix" + $flag1 = "/p:Package=Skip" + } + + $msbuild = Find-MSBuild + + Write-Host "$msbuild $solution /target:$target /property:Configuration=$configuration /p:DeployExtension=false /verbosity:minimal /p:VisualStudioVersion=14.0 $flag1 $flag2" + Run-Command -Fatal { & $msbuild $solution /target:$target /property:Configuration=$configuration /p:DeployExtension=false /verbosity:minimal /p:VisualStudioVersion=14.0 $flag1 $flag2 } + } + + Export-ModuleMember -Function Find-MSBuild,Build-Solution +} + +New-Module -ScriptBlock { + function Find-Git() { + $git = (Get-Command 'git.exe').Path + if (!$git) { + $git = Join-Path $rootDirectory 'PortableGit\cmd\git.exe' + } + if (!$git) { + Die("Couldn't find installed an git.exe") + } + $git + } + + function Push-Changes([string]$branch) { + Push-Location $rootDirectory + + Write-Host "Pushing $Branch to GitHub..." + + Run-Command -Fatal { & $git push origin $branch } + + Pop-Location + } + + function Update-Submodules { + Write-Host "Updating submodules..." + Write-Host "" + + Run-Command -Fatal { git submodule init } + Run-Command -Fatal { git submodule sync } + Run-Command -Fatal { git submodule update --recursive --force } + } + + function Clean-WorkingTree { + Write-Host "Cleaning work tree..." + Write-Host "" + + Run-Command -Fatal { git clean -xdf } + Run-Command -Fatal { git submodule foreach git clean -xdf } + } + + function Get-HeadSha { + Run-Command -Quiet { & $git rev-parse HEAD } + } + + $git = Find-Git + Export-ModuleMember -Function Find-Git,Push-Changes,Update-Submodules,Clean-WorkingTree,Get-HeadSha +} + +New-Module -ScriptBlock { + function Write-Manifest([string]$directory) { + Add-Type -Path (Join-Path $rootDirectory packages\Newtonsoft.Json.6.0.8\lib\net35\Newtonsoft.Json.dll) + + $manifest = @{ + NewestExtension = @{ + Version = [string](Read-CurrentVersionVsix) + Commit = [string](Get-HeadSha) + } + } + + $manifestPath = Join-Path $directory manifest + [Newtonsoft.Json.JsonConvert]::SerializeObject($manifest) | Out-File $manifestPath -Encoding UTF8 + } + + Export-ModuleMember -Function Write-Manifest +} \ No newline at end of file diff --git a/scripts/modules/AppVeyor.ps1 b/scripts/modules/AppVeyor.ps1 new file mode 100644 index 0000000000..49470283d0 --- /dev/null +++ b/scripts/modules/AppVeyor.ps1 @@ -0,0 +1,41 @@ +Set-StrictMode -Version Latest + +New-Module -ScriptBlock { + + function Get-AppVeyorPath { + Join-Path $rootDirectory appveyor.yml + } + + function Read-VersionAppVeyor { + $file = Get-AppVeyorPath + $currentVersion = Get-Content $file | %{ + $regex = "`^version: '(\d+\.\d+\.\d+)\.`{build`}'`$" + if ($_ -match $regex) { + $matches[1] + } + } + [System.Version] $currentVersion + } + + function Write-VersionAppVeyor([System.Version]$version) { + $file = Get-AppVeyorPath + $numberOfReplacements = 0 + $newContent = Get-Content $file | %{ + $newString = $_ + $regex = "version: '(\d+\.\d+\.\d+)" + if ($newString -match $regex) { + $numberOfReplacements++ + $newString = $newString -replace $regex, "version: '$($version.Major).$($version.Minor).$($version.Build)" + } + $newString + } + + if ($numberOfReplacements -ne 1) { + Die 1 "Expected to replace the version number in 1 place in appveyor.yml (version) but actually replaced it in $numberOfReplacements" + } + + $newContent | Set-Content $file + } + + Export-ModuleMember -Function Get-AppVeyorPath,Read-VersionAppVeyor,Write-VersionAppVeyor +} \ No newline at end of file diff --git a/scripts/modules/BuildUtils.psm1 b/scripts/modules/BuildUtils.psm1 new file mode 100644 index 0000000000..f93d6eecb2 --- /dev/null +++ b/scripts/modules/BuildUtils.psm1 @@ -0,0 +1,18 @@ +Set-StrictMode -Version Latest + +function Update-Submodules { + Write-Output "Updating submodules..." + Write-Output "" + + Run-Command -Fatal { git submodule init } + Run-Command -Fatal { git submodule sync } + Run-Command -Fatal { git submodule update --recursive --force } +} + +function Clean-WorkingTree { + Write-Output "Cleaning work tree..." + Write-Output "" + + Run-Command -Fatal { git clean -xdf } + Run-Command -Fatal { git submodule foreach git clean -xdf } +} \ No newline at end of file diff --git a/scripts/modules/Debugging.psm1 b/scripts/modules/Debugging.psm1 new file mode 100644 index 0000000000..2ca851ec0a --- /dev/null +++ b/scripts/modules/Debugging.psm1 @@ -0,0 +1,26 @@ +Set-StrictMode -Version Latest +$ErrorActionPreference = "Stop" + +$rootDirectory = Split-Path (Split-Path (Split-Path $MyInvocation.MyCommand.Path)) +$cdb = Join-Path $rootDirectory "tools\Debugging Tools for Windows\cdb.exe" + +function Get-DotNetStack([int]$ProcessId) { + $commands = @( + ".cordll -ve -u -l", + ".loadby sos clr", + "!eestack -ee", + ".detach", + "q" + ) + + $Env:_NT_SYMBOL_PATH = "cache*${Env:PROGRAMDATA}\dbg\sym;SRV*http://msdl.microsoft.com/download/symbols;srv*http://windows-symbols.githubapp.com/symbols" + $output = & $cdb -lines -p $ProcessId -c ($commands -join "; ") + if ($LastExitCode -ne 0) { + $output + throw "Error running cdb" + } + + $start = ($output | Select-String -List -Pattern "^Thread 0").LineNumber - 1 + $end = ($output | Select-String -List -Pattern "^Detached").LineNumber - 2 + $output[$start..$end] +} diff --git a/scripts/modules/SolutionInfo.ps1 b/scripts/modules/SolutionInfo.ps1 new file mode 100644 index 0000000000..4e1d6e1d0f --- /dev/null +++ b/scripts/modules/SolutionInfo.ps1 @@ -0,0 +1,41 @@ +Set-StrictMode -Version Latest + +New-Module -ScriptBlock { + + function Get-SolutionInfoPath { + Join-Path $rootDirectory src\common\SolutionInfo.cs + } + + function Read-VersionSolutionInfo { + $file = Get-SolutionInfoPath + $currentVersion = Get-Content $file | %{ + $regex = "const string Version = `"(\d+\.\d+\.\d+\.\d+)`";" + if ($_ -match $regex) { + $matches[1] + } + } + [System.Version] $currentVersion + } + + function Write-VersionSolutionInfo([System.Version]$version) { + $file = Get-SolutionInfoPath + $numberOfReplacements = 0 + $newContent = Get-Content $file | %{ + $newString = $_ + $regex = "(string Version = `")\d+\.\d+\.\d+\.\d+" + if ($_ -match $regex) { + $numberOfReplacements++ + $newString = $newString -replace $regex, "string Version = `"$version" + } + $newString + } + + if ($numberOfReplacements -ne 1) { + Die 1 "Expected to replace the version number in 1 place in SolutionInfo.cs (Version) but actually replaced it in $numberOfReplacements" + } + + $newContent | Set-Content $file + } + + Export-ModuleMember -Function Get-SolutionInfoPath,Read-VersionSolutionInfo,Write-VersionSolutionInfo +} \ No newline at end of file diff --git a/scripts/modules/Versioning.ps1 b/scripts/modules/Versioning.ps1 new file mode 100644 index 0000000000..22f94a8656 --- /dev/null +++ b/scripts/modules/Versioning.ps1 @@ -0,0 +1,68 @@ +Set-StrictMode -Version Latest + +New-Module -ScriptBlock { + + function Validate-Version([System.Version]$version) { + ($version.Major -ge 0) -and ($version.Minor -ge 0) -and ($version.Build -ge 0) + } + + function Generate-Version([System.Version]$currentVersion, + [bool]$BumpMajor, [bool] $BumpMinor, + [bool]$BumpPatch, [bool] $BumpBuild, + [int]$BuildNumber = -1) { + + if (!(Validate-Version $currentVersion)) { + Die 1 "Invalid current version $currentVersion" + } + + if ($BumpMajor) { + New-Object -TypeName System.Version -ArgumentList ($currentVersion.Major + 1), $currentVersion.Minor, $currentVersion.Build, 0 + } elseif ($BumpMinor) { + New-Object -TypeName System.Version -ArgumentList $currentVersion.Major, ($currentVersion.Minor + 1), $currentVersion.Build, 0 + } elseif ($BumpPatch) { + New-Object -TypeName System.Version -ArgumentList $currentVersion.Major, $currentVersion.Minor, ($currentVersion.Build + 1), 0 + } elseif ($BumpBuild) { + if ($BuildNumber -ge 0) { + [System.Version] "$($currentVersion.Major).$($currentVersion.Minor).$($currentVersion.Build).$BuildNumber" + } else { + $timestamp = [System.DateTimeOffset]::UtcNow.ToUnixTimeSeconds() + [System.Version] "$($currentVersion.Major).$($currentVersion.Minor).$($currentVersion.Build).$timestamp" + } + } + else { + $currentVersion + } + } + + function Read-Version { + Read-VersionAppVeyor + } + + function Write-Version([System.Version]$version) { + Write-VersionVsixManifest $version + Write-VersionSolutionInfo $version + Write-VersionAppVeyor $version + Push-Location $rootDirectory + New-Item -Type Directory -ErrorAction SilentlyContinue build | out-null + Set-Content build\version $version + Pop-Location + } + + function Commit-Version([System.Version]$version) { + + Write-Host "Committing version bump..." + + Push-Location $rootDirectory + + Run-Command -Fatal { & $git commit --message "Bump version to $version" -- } + + $output = Start-Process $git "commit --all --message ""Bump version to $version""" -wait -NoNewWindow -ErrorAction Continue -PassThru + if ($output.ExitCode -ne 0) { + Die 1 "Error committing version bump" + } + + Pop-Location + } + + Export-ModuleMember -Function Validate-Version,Write-Version,Commit-Version,Generate-Version,Read-Version +} diff --git a/scripts/modules/Vsix.ps1 b/scripts/modules/Vsix.ps1 new file mode 100644 index 0000000000..63563d3f00 --- /dev/null +++ b/scripts/modules/Vsix.ps1 @@ -0,0 +1,35 @@ +Set-StrictMode -Version Latest + +New-Module -ScriptBlock { + $gitHubDirectory = Join-Path $rootDirectory src\GitHub.VisualStudio + + function Get-VsixManifestPath { + Join-Path $gitHubDirectory source.extension.vsixmanifest + } + + function Get-VsixManifestXml { + $xmlLines = Get-Content (Get-VsixManifestPath) + # If we don't explicitly join the lines with CRLF, comments in the XML will + # end up with LF line-endings, which will make Git spew a warning when we + # try to commit the version bump. + $xmlText = $xmlLines -join [System.Environment]::NewLine + + [xml] $xmlText + } + + function Read-CurrentVersionVsix { + [System.Version] (Get-VsixManifestXml).PackageManifest.Metadata.Identity.Version + } + + function Write-VersionVsixManifest([System.Version]$version) { + + $document = Get-VsixManifestXml + + $numberOfReplacements = 0 + $document.PackageManifest.Metadata.Identity.Version = $version.ToString() + + $document.Save((Get-VsixManifestPath)) + } + + Export-ModuleMember -Function Read-CurrentVersionVsix,Write-VersionVsixManifest +} \ No newline at end of file diff --git a/scripts/test.ps1 b/scripts/test.ps1 new file mode 100644 index 0000000000..5f4d4561e9 --- /dev/null +++ b/scripts/test.ps1 @@ -0,0 +1,64 @@ +<# +.SYNOPSIS + Runs tests for GitHub for Visual Studio +.DESCRIPTION + Build GHfVS +.PARAMETER Clean + When true, all untracked (and ignored) files will be removed from the work + tree and all submodules. Defaults to false. +#> +[CmdletBinding()] + +Param( + [ValidateSet('Debug', 'Release')] + [string] + $Config = "Release" + , + [int] + $TimeoutDuration = 180 + , + [switch] + $AppVeyor = $false + , + [switch] + $Trace = $false + +) + +Set-StrictMode -Version Latest +if ($Trace) { + Set-PSDebug -Trace 1 +} + +$env:PATH = "$$PSScriptRoot;$env:PATH" + +$exitcode = 0 + +Write-Output "Running Tracking Collection Tests..." +Run-NUnit src TrackingCollectionTests $TimeoutDuration $config -AppVeyor:$AppVeyor +if (!$?) { + $exitcode = 1 +} + +Write-Output "Running GitHub.UI.UnitTests..." +Run-NUnit test GitHub.UI.UnitTests $TimeoutDuration $config -AppVeyor:$AppVeyor +if (!$?) { + $exitcode = 2 +} + +Write-Output "Running UnitTests..." +Run-XUnit src UnitTests $TimeoutDuration $config -AppVeyor:$AppVeyor +if (!$?) { + $exitcode = 3 +} + +Write-Output "Running GitHub.InlineReviews.UnitTests..." +Run-XUnit test GitHub.InlineReviews.UnitTests $TimeoutDuration $config -AppVeyor:$AppVeyor +if (!$?) { + $exitcode = 4 +} + +if ($exitcode -ne 0 -and $AppVeyor) { + $host.SetShouldExit($exitcode) +} +exit $exitcode \ No newline at end of file diff --git a/signingkey.snk b/signingkey.snk new file mode 100644 index 0000000000..371008d5a6 Binary files /dev/null and b/signingkey.snk differ diff --git a/src/CredentialManagement/CredentialManagement.csproj b/src/CredentialManagement/CredentialManagement.csproj index bfa3f7e2d4..f1f0d4d672 100644 --- a/src/CredentialManagement/CredentialManagement.csproj +++ b/src/CredentialManagement/CredentialManagement.csproj @@ -11,10 +11,9 @@ GitHub.CredentialManagement v4.6.1 512 - - - - bin\$(Configuration)\ + ..\common\GitHubVS.ruleset + true + true true @@ -23,6 +22,18 @@ DEBUG;TRACE prompt 4 + false + bin\Debug\ + + + true + full + false + CODE_ANALYSIS;DEBUG;TRACE + prompt + 4 + true + bin\Debug\ pdbonly @@ -30,6 +41,8 @@ TRACE prompt 4 + true + bin\Release\ diff --git a/src/DesignTimeStyleHelper/DesignTimeStyleHelper.csproj b/src/DesignTimeStyleHelper/DesignTimeStyleHelper.csproj index 240fd74259..587c6b4e3b 100644 --- a/src/DesignTimeStyleHelper/DesignTimeStyleHelper.csproj +++ b/src/DesignTimeStyleHelper/DesignTimeStyleHelper.csproj @@ -14,7 +14,6 @@ {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 true - bin\$(Configuration)\ @@ -25,6 +24,7 @@ DEBUG;TRACE prompt 4 + bin\Debug\ AnyCPU @@ -34,6 +34,7 @@ prompt 4 true + bin\Release\ diff --git a/src/GitHub.Api/GitHub.Api.csproj b/src/GitHub.Api/GitHub.Api.csproj index dc719d5460..752d52b193 100644 --- a/src/GitHub.Api/GitHub.Api.csproj +++ b/src/GitHub.Api/GitHub.Api.csproj @@ -11,8 +11,9 @@ GitHub.Api v4.6.1 512 - bin\$(Configuration)\ - + ..\common\GitHubVS.ruleset + true + true true @@ -21,10 +22,18 @@ DEBUG;TRACE prompt 4 + false + bin\Debug\ + + + true + full + false + CODE_ANALYSIS;DEBUG;TRACE + prompt + 4 true - ..\common\GitHubVS.ruleset - true - true + bin\Debug\ pdbonly @@ -33,9 +42,7 @@ prompt 4 true - true - true - ..\common\GitHubVS.ruleset + bin\Release\ @@ -50,11 +57,11 @@ - + ApiClientConfiguration_User.cs - + diff --git a/src/GitHub.App/GitHub.App.csproj b/src/GitHub.App/GitHub.App.csproj index 82207aacb2..16252452d3 100644 --- a/src/GitHub.App/GitHub.App.csproj +++ b/src/GitHub.App/GitHub.App.csproj @@ -1,26 +1,21 @@  - + Debug AnyCPU {1A1DA411-8D1F-4578-80A6-04576BEA2DC5} Library + {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} Properties GitHub.App GitHub.App v4.6.1 512 - {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - - - 4 - true ..\common\GitHubVS.ruleset true - bin\$(Configuration)\ - + true true @@ -29,10 +24,18 @@ DEBUG;TRACE prompt 4 + false + bin\Debug\ + + + true + full + false + CODE_ANALYSIS;DEBUG;TRACE + prompt + 4 true - ..\common\GitHubVS.ruleset - true - true + bin\Debug\ pdbonly @@ -41,14 +44,12 @@ prompt 4 true - true - true - ..\common\GitHubVS.ruleset + bin\Release\ - - ..\..\packages\LibGit2Sharp.0.24.0\lib\net40\LibGit2Sharp.dll + + ..\..\packages\LibGit2Sharp.0.23.1\lib\net40\LibGit2Sharp.dll True @@ -311,7 +312,7 @@ This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + @@ -29,25 +29,40 @@ true true true + ..\common\GitHubVS.ruleset + false + true + False + False true full false + TRACE;DEBUG + prompt + 4 + false bin\Debug\ - DEBUG;TRACE + + + true + full + false + TRACE;DEBUG;CODE_ANALYSIS prompt 4 - False - False + true + bin\Debug\ pdbonly true - bin\Release\ TRACE prompt 4 + false + bin\Release\ @@ -210,8 +225,8 @@ False - - ..\..\packages\LibGit2Sharp.0.24.0\lib\net40\LibGit2Sharp.dll + + ..\..\packages\LibGit2Sharp.0.23.1\lib\net40\LibGit2Sharp.dll True @@ -442,7 +457,7 @@ - + - false - + ..\..\packages\EditorUtils2013.1.4.1.1\lib\net40\EditorUtils2013.dll @@ -91,8 +110,8 @@ false - - ..\..\packages\LibGit2Sharp.0.24.0\lib\net40\LibGit2Sharp.dll + + ..\..\packages\LibGit2Sharp.0.23.1\lib\net40\LibGit2Sharp.dll True @@ -414,6 +433,7 @@ Designer + @@ -543,49 +563,49 @@ {241c47df-ca8e-4296-aa03-2c48bb646abd} Akavache.Sqlite3 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {b4e665e5-6caf-4414-a6e2-8de1c3bcf203} Akavache_Net45 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {674b69b8-0780-4d54-ae2b-c15821fa51cb} Octokit.Reactive - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {08dd4305-7787-4823-a53f-4d0f725a07f3} Octokit - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {600998c4-54dd-4755-bfa8-6f44544d8e2e} ReactiveUI.Events_Net45 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {1ce2d235-8072-4649-ba5a-cfb1af8776e0} ReactiveUI_Net45 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {252ce1c2-027a-4445-a3c2-e4d6c80a935a} Splat-Net45 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; @@ -597,89 +617,91 @@ {b389adaf-62cc-486e-85b4-2d8b078df763} GitHub.Api - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {1a1da411-8d1f-4578-80a6-04576bea2dc5} GitHub.App - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {e4ed0537-d1d9-44b6-9212-3096d7c3f7a1} GitHub.Exports.Reactive - False + True BuiltProjectOutputGroup%3bGetCopyToOutputDirectoryItems%3bDebugSymbolsProjectOutputGroup%3bBuiltProjectOutputGroup%3bBuiltProjectOutputGroupDependencies%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3b DebugSymbolsProjectOutputGroup%3b {9aea02db-02b5-409c-b0ca-115d05331a6b} GitHub.Exports - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {6559e128-8b40-49a5-85a8-05565ed0c7e3} GitHub.Extensions.Reactive - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {6afe2e2d-6db0-4430-a2ea-f5f5388d2f78} GitHub.Extensions - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {7f5ed78b-74a3-4406-a299-70cfb5885b8b} GitHub.InlineReviews - BuiltProjectOutputGroup%3bBuiltProjectOutputGroupDependencies%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3bPkgdefProjectOutputGroup%3bDebugSymbolsProjectOutputGroup%3b - DebugSymbolsProjectOutputGroup%3b + True + BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup;PkgdefProjectOutputGroup + DebugSymbolsProjectOutputGroup;PkgdefProjectOutputGroup {50e277b8-8580-487a-8f8e-5c3b9fbf0f77} GitHub.StartPage - BuiltProjectOutputGroup%3bBuiltProjectOutputGroupDependencies%3bGetCopyToOutputDirectoryItems%3bSatelliteDllsProjectOutputGroup%3bPkgdefProjectOutputGroup%3b - DebugSymbolsProjectOutputGroup%3b + True + BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup;PkgdefProjectOutputGroup + DebugSymbolsProjectOutputGroup;PkgdefProjectOutputGroup {161dbf01-1dbf-4b00-8551-c5c00f26720d} GitHub.TeamFoundation.14 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; - DebugSymbolsProjectOutputGroup%3b + DebugSymbolsProjectOutputGroup; {161dbf01-1dbf-4b00-8551-c5c00f26720e} GitHub.TeamFoundation.15 - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; - DebugSymbolsProjectOutputGroup%3b + DebugSymbolsProjectOutputGroup; {158b05e8-fdbc-4d71-b871-c96e28d5adf5} GitHub.UI.Reactive - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {346384dd-2445-4a28-af22-b45f3957bd89} GitHub.UI - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; {d1dfbb0c-b570-4302-8f1e-2e3a19c41961} GitHub.VisualStudio.UI - False + True BuiltProjectOutputGroup;GetCopyToOutputDirectoryItems;DebugSymbolsProjectOutputGroup; DebugSymbolsProjectOutputGroup; @@ -694,7 +716,8 @@ - + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. @@ -704,7 +727,7 @@ - + diff --git a/src/GitHub.VisualStudio/packages.config b/src/GitHub.VisualStudio/packages.config index 18daed1c57..046416394a 100644 --- a/src/GitHub.VisualStudio/packages.config +++ b/src/GitHub.VisualStudio/packages.config @@ -2,8 +2,8 @@ - - + + diff --git a/src/GitHub.VisualStudio/packaging.targets b/src/GitHub.VisualStudio/packaging.targets index 52871237f0..d9755fceef 100644 --- a/src/GitHub.VisualStudio/packaging.targets +++ b/src/GitHub.VisualStudio/packaging.targets @@ -8,18 +8,25 @@ $([System.String]::Copy('%(Filename)').Contains('Microsoft.')) or $([System.String]::Copy('%(Extension)').Contains('.dylib')) or $([System.String]::Copy('%(Extension)').Contains('.so')) or - $([System.Text.RegularExpressions.Regex]::IsMatch('%(FullPath)', '.*\\libgit2\\.*\.pdb')) + $([System.Text.RegularExpressions.Regex]::IsMatch('%(FullPath)', '.*\\LibGit2Sharp.NativeBinaries.*\\.*\.pdb')) "/> + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/GitHub.VisualStudio/source.extension.vsixmanifest b/src/GitHub.VisualStudio/source.extension.vsixmanifest index dcb99d5c5e..0e14f7c35d 100644 --- a/src/GitHub.VisualStudio/source.extension.vsixmanifest +++ b/src/GitHub.VisualStudio/source.extension.vsixmanifest @@ -1,7 +1,7 @@  - + GitHub Extension for Visual Studio A Visual Studio Extension that brings the GitHub Flow into Visual Studio. GitHub.VisualStudio @@ -11,7 +11,7 @@ Resources\preview_200x200.png GitHub;git;open source;source control;branch;pull request;team explorer;commit;publish - + diff --git a/src/GitHub.VisualStudio/versioning.targets b/src/GitHub.VisualStudio/versioning.targets new file mode 100644 index 0000000000..0d5eb330ee --- /dev/null +++ b/src/GitHub.VisualStudio/versioning.targets @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/MsiInstaller/MsiInstaller.wixproj b/src/MsiInstaller/MsiInstaller.wixproj deleted file mode 100644 index 93bf7dc1b4..0000000000 --- a/src/MsiInstaller/MsiInstaller.wixproj +++ /dev/null @@ -1,79 +0,0 @@ - - - - Debug - x86 - 3.9 - 1ed83084-2a57-4f89-915c-8a2167c0d6bc - 2.0 - ghfvs - Package - $(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets - $(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets - False - ICE80 - - - bin\$(Configuration)\ - obj\$(Configuration)\ - Debug - - - bin\$(Configuration)\ - obj\$(Configuration)\ - - - ..\..\build\Release\ - obj\$(Configuration)\ - False - True - - - ..\..\build\Release\ - obj\$(Configuration)\ - False - True - - - ..\..\build\Release\ - obj\$(Configuration)\ - False - True - - - - - - - $(WixExtDir)\WixUtilExtension.dll - WixUtilExtension - - - $(WixExtDir)\WixVSExtension.dll - WixVSExtension - - - - - - - - - - $(SolutionDir)packages\WiX.Toolset.2015.3.10.0.1503\tools\wix\ - $(WixToolPath)wix.targets - $(WixToolPath)WixTasks.dll - - - - - - - \ No newline at end of file diff --git a/src/MsiInstaller/Product.wxs b/src/MsiInstaller/Product.wxs deleted file mode 100644 index 801735ab9b..0000000000 --- a/src/MsiInstaller/Product.wxs +++ /dev/null @@ -1,81 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (NEWERFOUND OR SELFFOUND) AND VersionNT > 400 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/MsiInstaller/ProductInfo.wxi b/src/MsiInstaller/ProductInfo.wxi deleted file mode 100644 index 6899073da2..0000000000 --- a/src/MsiInstaller/ProductInfo.wxi +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/src/MsiInstaller/Version.wxi b/src/MsiInstaller/Version.wxi deleted file mode 100644 index 0daa10502b..0000000000 --- a/src/MsiInstaller/Version.wxi +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/MsiInstaller/Vsix.wxi b/src/MsiInstaller/Vsix.wxi deleted file mode 100644 index 8b6fd17aa5..0000000000 --- a/src/MsiInstaller/Vsix.wxi +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/src/MsiInstaller/logo.ico b/src/MsiInstaller/logo.ico deleted file mode 100644 index a6a956cf31..0000000000 Binary files a/src/MsiInstaller/logo.ico and /dev/null differ diff --git a/src/MsiInstaller/packages.config b/src/MsiInstaller/packages.config deleted file mode 100644 index d1c0c4a345..0000000000 --- a/src/MsiInstaller/packages.config +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/src/TrackingCollectionTests/packages.config b/src/TrackingCollectionTests/packages.config index 54b07dd61f..1e6d99a41f 100644 --- a/src/TrackingCollectionTests/packages.config +++ b/src/TrackingCollectionTests/packages.config @@ -1,6 +1,9 @@  + + + diff --git a/src/UnitTests/UnitTests.csproj b/src/UnitTests/UnitTests.csproj index 5b55c52dcd..61464d33a9 100644 --- a/src/UnitTests/UnitTests.csproj +++ b/src/UnitTests/UnitTests.csproj @@ -1,7 +1,10 @@  - + + + + Debug @@ -38,8 +41,8 @@ False - - ..\..\packages\LibGit2Sharp.0.24.0\lib\net40\LibGit2Sharp.dll + + ..\..\packages\LibGit2Sharp.0.23.1\lib\net40\LibGit2Sharp.dll True @@ -158,8 +161,8 @@ ..\..\packages\Microsoft.VisualStudio.TextManager.Interop.8.0.8.0.50727\lib\Microsoft.VisualStudio.TextManager.Interop.8.0.dll True - - ..\..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll + + ..\..\packages\NSubstitute.2.0.3\lib\net45\NSubstitute.dll True @@ -200,19 +203,19 @@ - False - ..\..\packages\xunit.abstractions.2.0.0\lib\net35\xunit.abstractions.dll + ..\..\packages\xunit.abstractions.2.0.1\lib\net35\xunit.abstractions.dll + True - - ..\..\packages\xunit.assert.2.1.0\lib\dotnet\xunit.assert.dll + + ..\..\packages\xunit.assert.2.3.1\lib\netstandard1.1\xunit.assert.dll True - - ..\..\packages\xunit.extensibility.core.2.1.0\lib\dotnet\xunit.core.dll + + ..\..\packages\xunit.extensibility.core.2.3.1\lib\netstandard1.1\xunit.core.dll True - - ..\..\packages\xunit.extensibility.execution.2.1.0\lib\net45\xunit.execution.desktop.dll + + ..\..\packages\xunit.extensibility.execution.2.3.1\lib\net452\xunit.execution.desktop.dll True @@ -382,16 +385,23 @@ Resources.Designer.cs + + + This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - - + + + + + +