Merge pull request #1042 from AArnott/libtemplateUpdate
Merge latest Library.Template
This commit is contained in:
Коммит
3c6a27f573
|
@ -3,13 +3,13 @@
|
||||||
"isRoot": true,
|
"isRoot": true,
|
||||||
"tools": {
|
"tools": {
|
||||||
"powershell": {
|
"powershell": {
|
||||||
"version": "7.4.1",
|
"version": "7.4.2",
|
||||||
"commands": [
|
"commands": [
|
||||||
"pwsh"
|
"pwsh"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dotnet-coverage": {
|
"dotnet-coverage": {
|
||||||
"version": "17.10.3",
|
"version": "17.11.0",
|
||||||
"commands": [
|
"commands": [
|
||||||
"dotnet-coverage"
|
"dotnet-coverage"
|
||||||
]
|
]
|
||||||
|
@ -21,4 +21,4 @@
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
<CentralPackageTransitivePinningEnabled>true</CentralPackageTransitivePinningEnabled>
|
||||||
|
|
||||||
<MessagePackVersion>2.5.108</MessagePackVersion>
|
<MessagePackVersion>2.5.108</MessagePackVersion>
|
||||||
<MicroBuildVersion>2.0.149</MicroBuildVersion>
|
<MicroBuildVersion>2.0.152</MicroBuildVersion>
|
||||||
<VisualStudioThreadingVersion>17.9.28</VisualStudioThreadingVersion>
|
<VisualStudioThreadingVersion>17.9.28</VisualStudioThreadingVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -36,10 +36,10 @@
|
||||||
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
|
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
|
||||||
<PackageVersion Include="xunit.combinatorial" Version="1.6.24" />
|
<PackageVersion Include="xunit.combinatorial" Version="1.6.24" />
|
||||||
<PackageVersion Include="xunit.runner.console" Version="2.5.3" />
|
<PackageVersion Include="xunit.runner.console" Version="2.5.3" />
|
||||||
<PackageVersion Include="xunit.runner.visualstudio" Version="2.5.7" />
|
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.0" />
|
||||||
<PackageVersion Include="xunit.skippablefact" Version="1.4.13" />
|
<PackageVersion Include="xunit.skippablefact" Version="1.4.13" />
|
||||||
<PackageVersion Include="xunit.stafact" Version="1.1.11" />
|
<PackageVersion Include="xunit.stafact" Version="1.1.11" />
|
||||||
<PackageVersion Include="xunit" Version="2.7.0" />
|
<PackageVersion Include="xunit" Version="2.8.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<GlobalPackageReference Include="CSharpIsNullAnalyzer" Version="0.1.495" />
|
<GlobalPackageReference Include="CSharpIsNullAnalyzer" Version="0.1.495" />
|
||||||
|
|
|
@ -75,7 +75,7 @@ stages:
|
||||||
targetType: filePath
|
targetType: filePath
|
||||||
filePath: $(Agent.TempDirectory)/Variables-Windows/_pipelines.ps1
|
filePath: $(Agent.TempDirectory)/Variables-Windows/_pipelines.ps1
|
||||||
- task: NuGetCommand@2
|
- task: NuGetCommand@2
|
||||||
displayName: Push CoreXT packages to VS feed
|
displayName: Push VS-repo packages to VS feed
|
||||||
inputs:
|
inputs:
|
||||||
command: push
|
command: push
|
||||||
packagesToPush: $(Agent.TempDirectory)/VSInsertion-Windows/*.nupkg
|
packagesToPush: $(Agent.TempDirectory)/VSInsertion-Windows/*.nupkg
|
||||||
|
|
|
@ -14,6 +14,7 @@ jobs:
|
||||||
displayName: 📢 collect apiscan artifact
|
displayName: 📢 collect apiscan artifact
|
||||||
targetPath: $(Pipeline.Workspace)/.gdn/.r/apiscan/001/Logs
|
targetPath: $(Pipeline.Workspace)/.gdn/.r/apiscan/001/Logs
|
||||||
artifactName: apiscan-logs
|
artifactName: apiscan-logs
|
||||||
|
condition: succeededOrFailed()
|
||||||
variables:
|
variables:
|
||||||
- name: SymbolsFeatureName
|
- name: SymbolsFeatureName
|
||||||
value: $[ dependencies.Windows.outputs['SetPipelineVariables.SymbolsFeatureName'] ]
|
value: $[ dependencies.Windows.outputs['SetPipelineVariables.SymbolsFeatureName'] ]
|
||||||
|
|
|
@ -28,7 +28,7 @@ $result = @{
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($env:IsOptProf) {
|
if ($env:IsOptProf) {
|
||||||
$CoreXTPackages = "$RepoRoot/bin/Packages/$BuildConfiguration/CoreXT"
|
$VSRepoPackages = "$RepoRoot/bin/Packages/$BuildConfiguration/VSRepo"
|
||||||
|
|
||||||
$ArtifactBasePath = "$RepoRoot\obj\_artifacts"
|
$ArtifactBasePath = "$RepoRoot\obj\_artifacts"
|
||||||
$ArtifactPath = "$ArtifactBasePath\VSInsertion"
|
$ArtifactPath = "$ArtifactBasePath\VSInsertion"
|
||||||
|
@ -47,12 +47,12 @@ if ($env:IsOptProf) {
|
||||||
# ultimately resulting in a failure of the optprof run.
|
# ultimately resulting in a failure of the optprof run.
|
||||||
$InsertionMetadataVersion += '.' + $env:BUILD_BUILDID
|
$InsertionMetadataVersion += '.' + $env:BUILD_BUILDID
|
||||||
}
|
}
|
||||||
& (& "$PSScriptRoot\..\Get-NuGetTool.ps1") pack "$PSScriptRoot\..\InsertionMetadataPackage.nuspec" -OutputDirectory $CoreXTPackages -BasePath $ArtifactPath -Version $InsertionMetadataVersion | Out-Null
|
& (& "$PSScriptRoot\..\Get-NuGetTool.ps1") pack "$PSScriptRoot\..\InsertionMetadataPackage.nuspec" -OutputDirectory $VSRepoPackages -BasePath $ArtifactPath -Version $InsertionMetadataVersion | Out-Null
|
||||||
if ($LASTEXITCODE -ne 0) {
|
if ($LASTEXITCODE -ne 0) {
|
||||||
exit $LASTEXITCODE
|
exit $LASTEXITCODE
|
||||||
}
|
}
|
||||||
|
|
||||||
$result["$CoreXTPackages"] = (Get-ChildItem "$CoreXTPackages\StreamJsonRpc.VSInsertionMetadata.$InsertionMetadataVersion.nupkg");
|
$result["$VSRepoPackages"] = (Get-ChildItem "$VSRepoPackages\StreamJsonRpc.VSInsertionMetadata.$InsertionMetadataVersion.nupkg");
|
||||||
}
|
}
|
||||||
|
|
||||||
$result
|
$result
|
||||||
|
|
|
@ -27,7 +27,7 @@ steps:
|
||||||
condition: and(succeeded(), ne(variables['OptProf'], 'true'))
|
condition: and(succeeded(), ne(variables['OptProf'], 'true'))
|
||||||
|
|
||||||
- ${{ if parameters.IsOptProf }}:
|
- ${{ if parameters.IsOptProf }}:
|
||||||
# We have to artifically run this script so that the extra .nupkg is produced for variables/InsertConfigValues.ps1 to notice.
|
# We have to artifically run this script so that the extra .nupkg is produced for variables/InsertPropsValues.ps1 to notice.
|
||||||
- powershell: azure-pipelines\artifacts\VSInsertion.ps1
|
- powershell: azure-pipelines\artifacts\VSInsertion.ps1
|
||||||
displayName: 🔧 Prepare VSInsertion artifact
|
displayName: 🔧 Prepare VSInsertion artifact
|
||||||
|
|
||||||
|
|
|
@ -25,13 +25,12 @@ stages:
|
||||||
- download: current
|
- download: current
|
||||||
artifact: symbols-legacy
|
artifact: symbols-legacy
|
||||||
displayName: 🔻 Download symbols-legacy artifact
|
displayName: 🔻 Download symbols-legacy artifact
|
||||||
- task: MicroBuildArchiveSymbols@4
|
- task: MicroBuildArchiveSymbols@5
|
||||||
displayName: 🔣 Archive symbols to Symweb
|
displayName: 🔣 Archive symbols to Symweb
|
||||||
inputs:
|
inputs:
|
||||||
SymbolsFeatureName: $(SymbolsFeatureName)
|
SymbolsFeatureName: $(SymbolsFeatureName)
|
||||||
SymbolsProject: VS
|
SymbolsProject: VS
|
||||||
SymbolsAgentPath: $(Pipeline.Workspace)/symbols-legacy
|
SymbolsAgentPath: $(Pipeline.Workspace)/symbols-legacy
|
||||||
azureSubscription: Symbols Upload (DevDiv)
|
|
||||||
|
|
||||||
- ${{ if true }}: # leave the condition to avoid merge conflicts later.
|
- ${{ if true }}: # leave the condition to avoid merge conflicts later.
|
||||||
- job: push
|
- job: push
|
||||||
|
|
|
@ -1,20 +0,0 @@
|
||||||
$BuildConfiguration = $env:BUILDCONFIGURATION
|
|
||||||
if (!$BuildConfiguration) {
|
|
||||||
$BuildConfiguration = 'Debug'
|
|
||||||
}
|
|
||||||
$BinPath = [System.IO.Path]::GetFullPath("$PSScriptRoot\..\..\bin\Packages\$BuildConfiguration")
|
|
||||||
|
|
||||||
$dirsToSearch = "$BinPath\NuGet\*.nupkg" |? { Test-Path $_ }
|
|
||||||
$icv=@()
|
|
||||||
|
|
||||||
if ($dirsToSearch) {
|
|
||||||
Get-ChildItem -Path $dirsToSearch |% {
|
|
||||||
if ($_.Name -match "^(.*?)\.(\d+\.\d+\.\d+(?:\.\d+)?(?:-.*?)?)(?:\.symbols)?\.nupkg$") {
|
|
||||||
$id = $Matches[1]
|
|
||||||
$version = $Matches[2]
|
|
||||||
$icv += "$id=$version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
Write-Output ([string]::join(',',$icv))
|
|
|
@ -41,7 +41,7 @@ extends:
|
||||||
artifact: VSInsertion-Windows
|
artifact: VSInsertion-Windows
|
||||||
displayName: 🔻 Download VSInsertion-Windows artifact
|
displayName: 🔻 Download VSInsertion-Windows artifact
|
||||||
- task: 1ES.PublishNuget@1
|
- task: 1ES.PublishNuget@1
|
||||||
displayName: 📦 Push CoreXT packages to VS feed
|
displayName: 📦 Push VS-repo packages to VS feed
|
||||||
inputs:
|
inputs:
|
||||||
packagesToPush: '$(Pipeline.Workspace)/CI/VSInsertion-Windows/*.nupkg'
|
packagesToPush: '$(Pipeline.Workspace)/CI/VSInsertion-Windows/*.nupkg'
|
||||||
packageParentPath: $(Pipeline.Workspace)/CI/VSInsertion-Windows
|
packageParentPath: $(Pipeline.Workspace)/CI/VSInsertion-Windows
|
||||||
|
|
|
@ -62,7 +62,7 @@ extends:
|
||||||
artifact: VSInsertion-Windows
|
artifact: VSInsertion-Windows
|
||||||
displayName: 🔻 Download VSInsertion-Windows artifact
|
displayName: 🔻 Download VSInsertion-Windows artifact
|
||||||
- task: 1ES.PublishNuget@1
|
- task: 1ES.PublishNuget@1
|
||||||
displayName: 📦 Push CoreXT packages to VS feed
|
displayName: 📦 Push VS-repo packages to VS feed
|
||||||
inputs:
|
inputs:
|
||||||
packagesToPush: '$(Pipeline.Workspace)/VSInsertion-Windows/*.nupkg'
|
packagesToPush: '$(Pipeline.Workspace)/VSInsertion-Windows/*.nupkg'
|
||||||
packageParentPath: $(Pipeline.Workspace)/VSInsertion-Windows
|
packageParentPath: $(Pipeline.Workspace)/VSInsertion-Windows
|
||||||
|
|
|
@ -2964,14 +2964,19 @@ public abstract class JsonRpcTests : TestBase
|
||||||
/// Asserts that when <see cref="JsonRpc.JoinableTaskTracker"/> is set to a unique instance, the deadlock avoidance fails.
|
/// Asserts that when <see cref="JsonRpc.JoinableTaskTracker"/> is set to a unique instance, the deadlock avoidance fails.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[UIFact]
|
[UIFact]
|
||||||
public void JoinableTaskFactory_IntegrationClientSideOnly_ManyConnections_UniqueTrackerLeadsToDeadlock()
|
public async Task JoinableTaskFactory_IntegrationClientSideOnly_ManyConnections_UniqueTrackerLeadsToDeadlock()
|
||||||
{
|
{
|
||||||
// Set up a main thread and JoinableTaskContext.
|
// Set up a main thread and JoinableTaskContext.
|
||||||
JoinableTaskContext jtc = new();
|
JoinableTaskContext jtc = new();
|
||||||
|
|
||||||
|
// Track our async work so our test doesn't exit before our UI thread requests do,
|
||||||
|
// or the test process will crash.
|
||||||
|
JoinableTaskCollection jtCollection = jtc.CreateCollection();
|
||||||
|
JoinableTaskFactory jtf = jtc.CreateFactory(jtCollection);
|
||||||
|
|
||||||
// Configure the client (only) to understand JTF.
|
// Configure the client (only) to understand JTF.
|
||||||
this.clientRpc.AllowModificationWhileListening = true;
|
this.clientRpc.AllowModificationWhileListening = true;
|
||||||
this.clientRpc.JoinableTaskFactory = jtc.Factory;
|
this.clientRpc.JoinableTaskFactory = jtf;
|
||||||
|
|
||||||
// Set up the alternate JsonRpc connection.
|
// Set up the alternate JsonRpc connection.
|
||||||
var streams = Nerdbank.FullDuplexStream.CreateStreams();
|
var streams = Nerdbank.FullDuplexStream.CreateStreams();
|
||||||
|
@ -2984,7 +2989,7 @@ public abstract class JsonRpcTests : TestBase
|
||||||
out IJsonRpcMessageHandler alternateClientHandler,
|
out IJsonRpcMessageHandler alternateClientHandler,
|
||||||
controlledFlushingClient: false);
|
controlledFlushingClient: false);
|
||||||
JsonRpc alternateServerRpc = new(alternateServerHandler, this.server) { JoinableTaskTracker = new() };
|
JsonRpc alternateServerRpc = new(alternateServerHandler, this.server) { JoinableTaskTracker = new() };
|
||||||
JsonRpc alternateClientRpc = new(alternateClientHandler) { JoinableTaskFactory = jtc.Factory };
|
JsonRpc alternateClientRpc = new(alternateClientHandler) { JoinableTaskFactory = jtf };
|
||||||
this.server.AlternateRpc = alternateServerRpc;
|
this.server.AlternateRpc = alternateServerRpc;
|
||||||
|
|
||||||
alternateServerRpc.TraceSource = new TraceSource("ALT Server", SourceLevels.Verbose | SourceLevels.ActivityTracing);
|
alternateServerRpc.TraceSource = new TraceSource("ALT Server", SourceLevels.Verbose | SourceLevels.ActivityTracing);
|
||||||
|
@ -2997,16 +3002,20 @@ public abstract class JsonRpcTests : TestBase
|
||||||
const string CallbackMethodName = "ClientNeedsMainThread";
|
const string CallbackMethodName = "ClientNeedsMainThread";
|
||||||
alternateClientRpc.AddLocalRpcMethod(CallbackMethodName, new Func<Task>(async delegate
|
alternateClientRpc.AddLocalRpcMethod(CallbackMethodName, new Func<Task>(async delegate
|
||||||
{
|
{
|
||||||
await jtc.Factory.SwitchToMainThreadAsync();
|
await jtf.SwitchToMainThreadAsync();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
alternateServerRpc.StartListening();
|
alternateServerRpc.StartListening();
|
||||||
alternateClientRpc.StartListening();
|
alternateClientRpc.StartListening();
|
||||||
|
|
||||||
jtc.Factory.Run(async delegate
|
jtf.Run(async delegate
|
||||||
{
|
{
|
||||||
await Assert.ThrowsAsync<OperationCanceledException>(() => this.clientRpc.InvokeWithCancellationAsync(nameof(this.server.CallbackOnAnotherConnection), new object?[] { CallbackMethodName }, this.TimeoutToken).WithCancellation(ExpectedTimeoutToken));
|
await Assert.ThrowsAsync<OperationCanceledException>(() => this.clientRpc.InvokeWithCancellationAsync(nameof(this.server.CallbackOnAnotherConnection), new object?[] { CallbackMethodName }, this.TimeoutToken).WithCancellation(ExpectedTimeoutToken));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Drain any UI thread requests before exiting the test.
|
||||||
|
await jtCollection.JoinTillEmptyAsync();
|
||||||
|
await Task.Yield();
|
||||||
}
|
}
|
||||||
|
|
||||||
[Fact]
|
[Fact]
|
||||||
|
|
Загрузка…
Ссылка в новой задаче