Bump the tests group with 6 updates - #335
Closed
dependabot[bot] wants to merge 1 commit into
Closed
Conversation
Bumps CancelCop.Analyzer from 1.27.173 to 1.38.0 Bumps iTextSharp.LGPLv2.Core from 3.8.2 to 3.8.3 Bumps Microsoft.Extensions.Http.Polly from 9.0.0 to 9.0.18 Bumps microsoft.web.librarymanager.cli from 3.0.71 to 3.0.114 Bumps SonarAnalyzer.CSharp from 10.29.0.143774 to 10.30.0.144632 Bumps System.ServiceModel.Syndication from 9.0.0 to 9.0.18 --- updated-dependencies: - dependency-name: CancelCop.Analyzer dependency-version: 1.38.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: tests - dependency-name: iTextSharp.LGPLv2.Core dependency-version: 3.8.3 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: tests - dependency-name: Microsoft.Extensions.Http.Polly dependency-version: 9.0.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: tests - dependency-name: microsoft.web.librarymanager.cli dependency-version: 3.0.114 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: tests - dependency-name: SonarAnalyzer.CSharp dependency-version: 10.30.0.144632 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: tests - dependency-name: System.ServiceModel.Syndication dependency-version: 9.0.18 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: tests ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
|
Superseded by #337. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Updated CancelCop.Analyzer from 1.27.173 to 1.38.0.
Release notes
Sourced from CancelCop.Analyzer's releases.
1.38.0
New rule: CC036 — blocking
Socketcalls in async codeA socket call blocks until the network responds — or until a TCP timeout that can run into minutes. Inside async code that parks a thread-pool thread on a remote party's behaviour, the least predictable thing a server waits on.
AcceptandConnectare worse still: they can block indefinitely, with no data to wait for.Covers
Receive,ReceiveFrom,ReceiveMessageFrom,Send,SendTo,SendFile,Accept,Connect,Disconnect.Why this is a separate rule, not an extension of CC028
CC028 covers blocking
System.IOcalls including everyStream, so aNetworkStreamis already handled there — and CC036 stays quiet on it.CC028 can offer a code fix only because it requires the async counterpart to be signature-compatible: the same parameters, optionally plus a token. Socket's async APIs are not shaped that way —
Receive(byte[])pairs withReceiveAsync(Memory<byte>, CancellationToken), andAccept()withAcceptAsync(CancellationToken)returning a different type. Loosening CC028's matching to reach them would give up exactly the property that makes its rewrites safe. So CC036 stands apart, and is analyzer-only because no mechanical rewrite exists.Conservative by design
Socket.Receivein async code produced zero diagnostics from all 35 existing rules.Socketis resolved from the compilation and matched by symbol, through the override chain.SendFileAsyncis absent on .NET Standard 2.0, and recommending it there would suggest a call that does not compile.socket.Blocking = falsemakes the synchronous calls return immediately. The assigned member is resolved toSocket.Blockingby symbol (object initializers and unqualified inherited assignments count; an unrelated property of the same name does not), only a plain=counts, the scan stops at nested functions, and only the last assignment before the call is in effect.987 tests passing (was 970). 36 diagnostics.
1.37.0
New rule: CC035 — cancellation silently swallowed by an empty catch
Cancellation is reported by an exception precisely so the caller learns the work did not finish. An empty catch discards that signal: execution continues past the
tryas though the operation succeeded, and downstream code acts on results that were never produced.Complements CC019
CC019 covers a broad catch —
catchorcatch (Exception)— that swallows cancellation among everything else. A clause naming the cancellation type explicitly is outside its scope, yet it is the more deliberate-looking version of the same defect. Verified against the shipped analyzer before the rule was written: zero diagnostics from all 34 existing rules on this shape.Scoped to the empty body
Catching cancellation to stop quietly is a real pattern at a boundary, and such handlers do something. The rule stays quiet for any statement, a
whenfilter, a rethrow — or a comment recording the intent, so the idiomatic wait-until-cancelled handler is clean:That exemption came from the repository's own clean-code guard, which caught the rule firing on exactly this pattern during development. A documented discard is not a silent one.
TaskCanceledExceptionand other subclasses are covered, and the framework exception is matched by symbol — source that declares its ownSystem.OperationCanceledExceptionis not mistaken for it.Info severity (a deliberate silent stop is unusual but legitimate) and analyzer-only (the right resolution depends on what the caller needs to know).
970 tests passing (was 959). 35 diagnostics.
1.36.0
New rule: CC034 —
ParallelOptionsmissing aCancellationTokenParallelOptions.CancellationTokenis the only way to cancel aParallelloop. Without it the loop runs every partition to completion no matter what the caller wants — and a long parallel loop over a large collection is precisely the work most worth stopping.CC002 structurally cannot see this
CC002 fires on a call with a token-accepting overload. Here the token is neither an argument nor an overload — it's a property in an object initializer, and
Parallel.ForEachhas no token-taking overload at all.Verified empirically before the rule was written: a probe project referencing the shipped analyzer produced zero diagnostics from all 33 existing rules on this shape.
When it stays quiet
When it still reports
A token that cannot cancel is not "set":
default,CancellationToken.None,new CancellationToken(),new CancellationToken(false). Nor is an assignment that does not reach the loop:if,switch, loop, conditional expression, or short-circuit whose branch does not contain the loop (when creation, assignment and loop share a branch, it is accepted)this.optionsandother.optionsshare a field symbol, so the receiver is matched tooThe fix
Appends to an existing initializer rather than replacing it, drops the now-redundant empty argument list, re-escapes keyword parameter names, and adds no import — the identifier is already in scope, and
using System.Threading;could make an existing customCancellationTokenambiguous (CS0104).959 tests passing (was 929). 34 diagnostics.
1.35.0
Fixed: CC001's code fix on an async iterator
CC001 has always covered async iterators, but its fix added a bare
CancellationToken. On an iterator that token is ignored by the compiler-generatedGetAsyncEnumerator, so a consumer's.WithCancellation(token)silently fails to reach it — which is precisely what CC011 reports.Applying CC001's fix to an async iterator therefore:
The
System.Runtime.CompilerServicesimport comes with it. A regression test runs CC011 over CC001's fixed output, which is the direct expression of "the two rules now agree".Precisely scoped
IAsyncEnumerable<T>, checked semantically. CC001 also covers iterators returningIAsyncEnumerator<T>, where the attribute has no effect and produces CS8424 — breaking any project that treats warnings as errors.[EnumeratorCancellation]on a non-iterator is CS8205.yieldinside a nested local function belongs to that function's iterator, not the enclosing method.[EnumeratorCancellation]in ordinary code but cannot be captured by a consumer's ownEnumeratorCancellationAttributeor a nestedSystemnamespace.929 tests passing (was 921). No diagnostic IDs or severities changed — 33 diagnostics.
1.34.0
New rule: CC033 —
CancellationTokenSourcefield never disposedA source owns a timer (once a delay is set) and a registration list that every linked token and every
Registercallback adds to. A field keeps that alive for the whole lifetime of the owning object.Linked sources are worse: an undisposed child stays attached to its parent's callback list, so a long-lived parent accumulates every child ever created.
Complements CC014
CC014 owns the local case, where the fix is mechanical — make it a
usingdeclaration. A field's lifetime is the object's, so the resolution is to implementIDisposableand let the owner's disposal cascade. That's a design change, so CC033 is analyzer-only.Ownership is the gate
Fires only when the declaring type creates the source — including
new(), a parenthesized or cast creation, a conditional (enabled ? new() : new()),CreateLinkedTokenSource, and CTS subclasses. An injected source belongs to whoever created it, and demanding its disposal would be actively harmful.Exonerating: disposal anywhere in the type —
_cts.Dispose(),this._cts.Dispose(),_cts?.Dispose(),(_cts!).Dispose(),((IDisposable)_cts).Dispose(),using (_cts) { }— plus escape by return, argument, local alias, or assignment (including through a conditional or??), andstaticfields.Not exonerating: naming
Disposewithout calling it (Action cleanup = _cts.Dispose;), an extension method spelledDispose/DisposeAsync(CTS has no instanceDisposeAsync, so every such call is an extension), and a subclass that hidesDisposewith a no-op —CancellationTokenSource.Dispose()is not virtual.Implementation note
Built on a symbol-start action, so the whole type — every member, every partial declaration — is seen while each nested node action arrives with the semantic model for its own tree, rather than reaching for
Compilation.GetSemanticModel(RS1030).Two clean-code samples changed
AllAnalyzersCleanCodeTestshad two samples creating a CTS field and never disposing it. They predate this rule and genuinely leak — the same defect CA2213 catches — so the samples now dispose what they create.921 tests passing (was 893). 33 diagnostics.
1.33.0
New rule: CC032 — async call not awaited in non-async code
A dropped task cannot be cancelled, cannot be waited on at shutdown, and its failure is never observed — the exception surfaces later on an unrelated thread, or nowhere at all. Work started this way outlives the request or host that started it: the same class of problem as a token that is never passed.
The gap this fills
CS4014 only fires inside an async method. In a constructor, a synchronous method, or a non-async lambda — exactly where the mistake is easiest to make, because there is no
awaitto reach for — the compiler says nothing at all.CC032 covers that gap and defers to the compiler everywhere CS4014 already reports, so the two never double up.
Covered forms
worker?.StartAsync();) — the diagnostic underlines the whole expression, not the fragment after the?.Tasksubclasses and type parameters constrained toTaskConfigureAwaitresults, and discarded awaiters (SaveAsync().GetAwaiter();, including the nested configured awaiters) — the compiler warns about none of these in any context, so they are reported inside async methods tooNot flagged
_ = SaveAsync()— the documented way to say "I know, and I mean it"; a rule that flagged the opt-in would be impossible to satisfyTask-returning delegates, which hand the task to their callerasynclambda converted tovoid— that is CC024's findingFramework types are matched by identity: a user's nested
Outer.TaskAwaiter, or aTasksubclass namedTaskAwaiter, is not mistaken for the framework type.Analyzer-only
The right resolution — make the caller async and await, hand the task to something that observes it, or opt in deliberately — depends on intent. Same choice as CC017, CC020, CC024, CC027, CC031.
893 tests passing (was 867). 32 diagnostics.
1.32.0
New rule: CC031 — blocking synchronization primitives in async code
ManualResetEventSlim.Wait,CountdownEvent.Wait,WaitHandle.WaitOne/WaitAll/WaitAny,Monitor.Wait, andThread.Joinpark a thread-pool thread until another thread signals.In async code that is the worst kind of blocking: the wait is unbounded, it consumes a pooled thread that the continuations it is waiting for may themselves need, and under load it can deadlock the pool outright. None of them observes a
CancellationTokenby default, so shutdown and request abort cannot reclaim the thread.Analyzer-only by design
Unlike the rest of the blocking-in-async family (CC013, CC015, CC026, CC028, CC030), these primitives have no
…Asynccounterpart in .NET. Resolving the finding means changing the design — aSemaphoreSlimawaited withWaitAsync, aTaskCompletionSourcesignalled instead of an event, or awaiting the task rather than joining the thread. That is a judgement call, so no fix is offered, as with CC017, CC020, CC024, and CC027.Conservative by design
System.Threading.Thread<T>— same name, same namespace — is not mistaken for the primitive.ManualResetEvent.WaitOneresolves toWaitHandle.WaitOne.TimeSpan.Zero,default,new TimeSpan(),new TimeSpan(0), andnew TimeSpan(0, 0, 0), none of which is a compiler constant.Monitor.Waitis exempt from that exclusion: a zero timeout only ends the condition wait, and the call still cannot return until it reacquires the monitor, which can block behind another thread.SemaphoreSlim.Waitis left to CC026, which owns it and can offer a real fix.Also
The provably-zero-timeout check moved to
CancellationTokenHelpers.HasProvablyZeroTimeout, shared by CC026 and CC031 rather than copied per rule — a copy is how one rule ends up recognising a zero form the others do not.867 tests passing (was 850). 31 diagnostics.
1.31.0
Fix-safety release
Every rule whose code fix inserts an
awaitnow withholds that fix where theawaitwould not compile, and reports the diagnostic without one.CC030 shipped with this guard in v1.30.0 and CC028 had half of it. CC013, CC015, CC022, CC025, and CC026 had none — applying their fix in these positions turned compiling code into a build error.
Where the fix is withheld
Syntactic — a
lockbody (CS1996), an exception filter, an unsafe context (CS4004,unsafemodifier as well as block, propagating into nested functions), a query clause outside the two positions CS1995 permits.Ref-like lifetimes (CS4007 / CS9217 / CS8178) — an
awaitmay not split the life of aref struct. Covered:Span<T>local, ausing varref struct (disposed at scope exit), anout Span<T>declaration expressionforeachenumerators — including when the collection is an ordinary class and onlyGetEnumerator()returns a ref struct — andrefiteration variables, in bothforeachsyntax formsConsume(stackalloc int[1], task.Result), a ref-like call receiver (span.Slice(task.Result)), a ref-returning argument (Consume(ref GetRef(), …)), and custom interpolated-string handlersspan[0] = task.Resultis caught,Consume(span[0], task.Result)is notgoto, andgoto case/goto defaultAnd where it is not. Source position is not liveness, so the guard also avoids withholding valid fixes: locals already out of scope,
nameof(span)references, untaken conditional arms, oppositeif/elsearms, siblingswitchsections, values consumed before the await, and — sinceawait usingawaits at disposal — a span read before scope exit, or a ref struct declared after this one (disposal runs in reverse order).The findings do not change
Blocking I/O inside a
lockis exactly the stall these rules exist to surface. Only the automated rewrite is withheld, because resolving it means restructuring the surrounding code — the author's call, not a mechanical edit.Design
Both halves sit behind
CancellationTokenHelpers.AwaitInsertionIsUnsafe, so a future await-inserting rule gets the guard by asking one question rather than rediscovering the compiler errors one at a time.850 tests passing (was 822). No diagnostic IDs or severities changed.
1.30.0
New rule: CC030 — blocking
Process.WaitForExit()in async codeWaitForExit()is the worst-behaved member of the blocking-in-async family. The wait is unbounded and depends on a program outside your control, so a hung child process pins a thread-pool thread indefinitely — and no cancellation, shutdown signal, or request abort can reclaim it.CC002 cannot cover this. It fires on calls that have a token-accepting overload; here the async form is a differently-named method.
Conservative by design
WaitForExit(int)is not flagged — it returnsboolandWaitForExitAsynctakes only a token, so no rewrite preserves the call's meaning.System.Diagnostics.Process; quiet unless the target framework actually exposesWaitForExitAsync(.NET 5+), so .NET Framework consumers never see an impossible suggestion.WaitForExitAsynccannot produce a broken fix.Reported without a fix
The call is genuinely blocking, but no safe mechanical rewrite exists:
?.chainawait-forbidden contexts:lockbodies (CS1996), exception filters, unsafe contexts (CS4004, modifier as well as block), query clauses outside the two positions CS1995 permitsawaitwould span a ref-like lifetime (CS4007/CS9217):Span<T>locals live across the call,using varref structs, ref-structforeachenumerators (both loop forms),refiteration variables,out Span<T>declaration expressions, and loop headers whose condition or incrementor runs after the bodyFix fidelity
Trivia survives — comments in the receiver, on the member name, and inside the argument list. Keyword parameter names are re-escaped (
@event,@await). When the in-scope token's name is shadowed, the fix falls back to the parameterless form rather than dropping the finding.Also
The
await-forbidden-context check moved into shared helpers now that a second rule needs it, alongside new shared speculative-binding and rewrite builders — the call an analyzer checks is now literally the call its fixer writes.822 tests passing (was 788).
1.29.0
CC028 now covers the
System.IO.StreamprimitivesRead,Write,CopyTo, andFlushwere a silent false negative. The rule keyed on the exact declaring type name (File,StreamReader,StreamWriter), so blocking on a stream inside async code was never flagged — despite every one of those methods having a token-taking async counterpart.source.CopyTo(destination)in an async method blocks the thread for the entire transfer.Matching
Stream, soFileStream,NetworkStream,GZipStream, and user subclasses are covered at any depth of overriding — while a subclass's ownWrite(string)convenience overload is not.MemoryStreamis excluded (in-memory buffer; the async form only wraps the same synchronous work), includingT where T : MemoryStreamreceivers.Fix safety
The rule's contract is that the rewrite it offers always compiles. This release makes that hold under adversarial subclass shapes: Roslyn speculatively binds the exact call the fix would emit, and the diagnostic is only reported when it resolves to the intended counterpart. Candidates must be public, non-hiding-static, generic-inferable, and yield a substitutable awaited result.
Where the call is genuinely blocking but no safe mechanical rewrite exists, the diagnostic is reported without a fix: named arguments that would be remapped, and
await-forbidden contexts (lockbodies, exception filters, unsafe contexts, and query clauses outside the two positions CS1995 permits).Also
788 tests passing (was 753). No diagnostic IDs or severities changed.
1.28.1
Changed
Discoverability release for CancelCop.Analyzer 1.28.1:
assets/for NuGet README renderingDiscoverabilityMetadataTestsandscripts/verify-packages.shDiagnostic IDs and severities are unchanged from 1.28.0 (including CC029).
Install
https://www.nuget.org/packages/CancelCop.Analyzer/1.28.1
1.28.0
Added
LinkedTimeoutTokenSourceAnalyzer): flags a timeoutCancellationTokenSource(new CancellationTokenSource(TimeSpan|int)orCancelAfteron a parameterless local) when an in-scope parent token is not linked. Code fix rewrites toCreateLinkedTokenSource(token)+CancelAfter(delay).This catches the common ASP.NET / worker bug where a timeout silently drops
RequestAbortedor the caller's cancellation.Validation
1.27.224
Changed
Validation
1.27.223
Fixed
OperationCanceledException, a derived cancellation type, or a possible interface-implementing cancellation subtype are diagnosed, while disjoint and same-named custom types stay quiet.Verification
1.27.222
Fixed
CancellationTokenSource.CancelAsync()before reportingCancel().Verification
1.27.221
Fixed
[AcceptVerbs(...)]and offers the existing add-token fix.Microsoft.AspNetCore.Mvcremain excluded.Verification
1.27.220
CC005C: positional unreduced EndpointRouteBuilderExtensions Map calls now analyze and fix lambda and method-group handlers with exact framework and route-builder gates. Verified by 722 tests, Release build, package inspection, PR CI, and master CI.
1.27.219
CC015: statically imported Task.WaitAll and Task.WaitAny calls are now diagnosed in async code while zero-timeout, shadowing, and sync guards remain quiet. Verified by 717 tests, Release build, package inspection, PR CI, and master CI.
1.27.218
CC020/CC021: null-conditional reduced extension calls now count as context handoffs while ordinary instance calls remain diagnostic. Verified by 712 tests, Release build, package inspection, PR CI, and master CI.
1.27.217
CC020/CC021: chained null-conditional CancellationToken and RequestAborted reads now count as observation while nested-object members remain excluded. Verified by 709 tests, Release build, package inspection, PR CI, and master CI.
1.27.216
Fixed CC020/CC021 false positives: direct null-conditional context token reads now count as runtime observation, while similarly named downstream members do not.
1.27.215
Fixed a CC022 false negative: null-conditional CancellationTokenSource.Cancel() calls are now diagnosed in async code. No automatic fix is offered because preserving null semantics requires a control-flow rewrite.
1.27.214
Fixed a CC002 false negative by classifying explicit arguments by their parameter-converted type, so boxed token expressions no longer masquerade as propagation while contextual token defaults remain recognized.
1.27.213
Fixed a CC019 false negative: a conditional rethrow restricted to an unrelated exception type no longer masks cancellation swallowing, while OperationCanceledException guards remain recognized.
1.27.212
CC009 now ignores cancellation checks deferred inside nested lambdas or local functions when evaluating an enclosing loop.
1.27.211
CC016 and CC017 now diagnose cancellation-token parameters only passed as out, while ref, in, and ordinary forwarding remain observations.
1.27.210
CC012 now diagnoses and fixes CancellationToken.None imported through using static while keeping custom None properties quiet.
1.27.209
CC016 and CC017 now diagnose cancellation-token parameters that are only overwritten before use, while preserving right-hand-side reads as real observation.
1.27.208
Fixed
CancellationToken.None, typeddefault, and default-literal arguments when a token is available.1.27.207
Fixed
IDisposable.Dispose()invocations through an exact built-in interface cast.1.27.206
Fixed
using (resource).1.27.205
Fixed
1.27.204
Fixed
TimeSpandurations so scheduler-yield semantics are not rewritten to synchronously completingTask.Delaycalls.TimeSpansleeps remain diagnostic.1.27.203
Fixed
1.27.202
Fixed
using staticimports.1.27.201
Fixed
Thread.Sleep(0).1.27.200
Fixed
1.27.199
Fixed
1.27.198
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.197...v1.27.198
1.27.197
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.196...v1.27.197
1.27.196
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.195...v1.27.196
1.27.195
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.194...v1.27.195
1.27.194
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.193...v1.27.194
1.27.193
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.192...v1.27.193
1.27.192
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.191...v1.27.192
1.27.191
CC026 now excludes exact zero-TimeSpan SemaphoreSlim.Wait probes.
1.27.190
CC015 now treats zero-timeout Task.WaitAll and Task.WaitAny calls as immediate probes.
1.27.189
CC015 now excludes exact zero-TimeSpan Task.Wait probes while preserving potentially blocking timeout diagnostics.
1.27.188
CC015 no longer diagnoses Task.Wait(0), a guaranteed immediate completion probe.
1.27.187
CC022 and CC025 now recognize async top-level programs while preserving purely synchronous top-level behavior.
1.27.186
CC024 now diagnoses async lambdas converted to custom void-returning delegates while preserving the sanctioned event-handler delegate shape.
1.27.185
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.184...v1.27.185
1.27.184
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.183...v1.27.184
1.27.183
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.182...v1.27.183
1.27.182
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.181...v1.27.182
1.27.181
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.180...v1.27.181
1.27.180
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.179...v1.27.180
1.27.179
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.178...v1.27.179
1.27.178
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.177...v1.27.178
1.27.177
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.176...v1.27.177
1.27.176
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.175...v1.27.176
1.27.175
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.174...v1.27.175
1.27.174
What's Changed
Full Changelog: georgepwall1991/CancelCop.Analyzer@v1.27.173...v1.27.174
Commits viewable in compare view.
Updated iTextSharp.LGPLv2.Core from 3.8.2 to 3.8.3.
Release notes
Sourced from iTextSharp.LGPLv2.Core's releases.
No release notes found for this version range.
Commits viewable in compare view.
Updated Microsoft.Extensions.Http.Polly from 9.0.0 to 9.0.18.
Release notes
Sourced from Microsoft.Extensions.Http.Polly's releases.
9.0.18
Release
What's Changed
d72f9c8toa721f1bby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest fromd72f9c8toa721f1bdotnet/aspnetcore#66974a721f1bto7140cd4by @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest froma721f1bto7140cd4dotnet/aspnetcore#67217Full Changelog: dotnet/aspnetcore@v9.0.17...v9.0.18
9.0.17
Release
What's Changed
Full Changelog: dotnet/aspnetcore@v9.0.16...v9.0.17
9.0.16
Release
What's Changed
73a63eatod72f9c8by @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from73a63eatod72f9c8dotnet/aspnetcore#66088Full Changelog: dotnet/aspnetcore@v9.0.15...v9.0.16
9.0.15
Release
What's Changed
56efe39to73a63eaby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from56efe39to73a63eadotnet/aspnetcore#65587Full Changelog: dotnet/aspnetcore@v9.0.14...v9.0.15
9.0.14
Release
What's Changed
9156d4cto56efe39by @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from9156d4cto56efe39dotnet/aspnetcore#65290Full Changelog: dotnet/aspnetcore@v9.0.13...v9.0.14
9.0.13
Release
What's Changed
1b96fa1to9156d4cby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from1b96fa1to9156d4cdotnet/aspnetcore#64908Full Changelog: dotnet/aspnetcore@v9.0.12...v9.0.13)
9.0.12
Release
What's Changed
Microsoft.Buildversions to 17.8.43 by @MackinnonBuck in UpdateMicrosoft.Buildversions to 17.8.43 dotnet/aspnetcore#642779706f75to6ec14dfby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from9706f75to6ec14dfdotnet/aspnetcore#642306ec14dfto1b96fa1by @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from6ec14dfto1b96fa1dotnet/aspnetcore#64580Full Changelog: dotnet/aspnetcore@v9.0.11...v9.0.12
9.0.11
Release
What's Changed
eb2d85eto9706f75by @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest fromeb2d85eto9706f75dotnet/aspnetcore#63894Full Changelog: dotnet/aspnetcore@v9.0.10...v9.0.11
9.0.10
Release
What's Changed
373af2etoeb2d85eby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest from373af2etoeb2d85edotnet/aspnetcore#63501RadioButtonGetsResetAfterSubmittingEnhancedFormby @ilonatommy in UnquarantineRadioButtonGetsResetAfterSubmittingEnhancedFormdotnet/aspnetcore#63556Full Changelog: dotnet/aspnetcore@v9.0.9...v9.0.10
9.0.9
Release
What's Changed
c67de11to373af2eby @dependabot[bot] in [release/9.0] (deps): Bump src/submodules/googletest fromc67de11to373af2edotnet/aspnetcore#63035Full Changelog: dotnet/aspnetcore@v9.0.8...v9.0.9
9.0.7
Release
What's Changed
04ee1b4toe9092b1by @dependabot in [release/9.0] (deps): Bump src/submodules/googletest from04ee1b4toe9092b1dotnet/aspnetcore#62199Full Changelog: dotnet/aspnetcore@v9.0.6...v9.0.7
9.0.6
Bug Fixes
The Forwarded Headers Middleware now ignores
X-Forwarded-Headerssent from unknown proxies. This change improves security by ensuring that only trusted proxies can influence forwarded header values, preventing potential spoofing or misrouting issues.Dependency Updates
52204f7to04ee1b4(#61762)Updates the GoogleTest submodule to a newer commit, bringing in the latest improvements and bug fixes from the upstream project.
Updates internal build and infrastructure dependencies from the dotnet/arcade repository, ensuring compatibility and access to the latest build tools.
Refreshes dependencies from the dotnet/extensions repository, incorporating the latest features and fixes from the extensions libraries.
Further updates dependencies from dotnet/extensions, ensuring the project benefits from recent improvements and bug fixes.
Additional updates to build and infrastructure dependencies from dotnet/arcade, maintaining up-to-date tooling and build processes.
Miscellaneous
Updates the project version and branding to 9.0.6, reflecting the new release and ensuring version consistency across the codebase.
Incorporates various internal commits into the release/9.0 branch, ensuring that all relevant changes are included in this release.
This summary is generated and may contain inaccuracies. For complete details, please review the linked pull requests.
Full Changelog: v9.0.5...v9.0.6
9.0.5
Release
What's Changed
24a9e94to52204f7by @dependabot in [release/9.0] (deps): Bump src/submodules/googletest from24a9e94to52204f7dotnet/aspnetcore#61261Full Changelog: dotnet/aspnetcore@v9.0.4...v9.0.5
9.0.4
Release
What's Changed
e235eb3to24a9e94by @dependabot in [release/9.0] (deps): Bump src/submodules/googletest frome235eb3to24a9e94dotnet/aspnetcore#60678Full Changelog: dotnet/aspnetcore@v9.0.3...v9.0.4
9.0.3
Release
What's Changed
HtmlAttributePropertyHelperto correctly follow theMetadataUpdateHandlerAttributecontract by @github-actions in [release/9.0] UpdateHtmlAttributePropertyHelperto correctly follow theMetadataUpdateHandlerAttributecontract dotnet/aspnetcore#599087d76a23toe235eb3by @dependabot in [release/9.0] (deps): Bump src/submodules/googletest from7d76a23toe235eb3dotnet/aspnetcore#60151Full Changelog: dotnet/aspnetcore@v9.0.2...v9.0.3
9.0.2
Release
What's Changed
d144031to7d76a23by @dependabot in [release/9.0] (deps): Bump src/submodules/googletest fromd144031to7d76a23dotnet/aspnetcore#59679Description has been truncated