Skip to content

fix: CDP-only netstandard2.0 build failure with System.Threading.Channels - #3512

Merged
kblok merged 2 commits into
masterfrom
fix-cdp-only-netstandard-build
Jul 3, 2026
Merged

kblok merged 2 commits into
masterfrom
fix-cdp-only-netstandard-build

Conversation

@kblok

@kblok kblok commented Jul 3, 2026

Copy link
Copy Markdown
Member

The v25.3.0 nuget publish run failed while packing the CDP-only build: ScreenRecorder.cs uses System.Threading.Channels, which isn't in the netstandard2.0 BCL. It only compiled in the normal build because WebDriverBiDi's netstandard2.0 dependency group transitively pulls in System.Threading.Channels — and that package reference gets excluded when CDP_ONLY is defined, so the CDP-only netstandard2.0 target lost the package with it.

Fixed by adding an explicit reference to the netstandard2.0 item group so it doesn't ride on WebDriverBiDi's coattails.

The reason CI never caught this: the CDP-only build path is only exercised by the release-tag publish workflow, never by the regular PR/push CI. Added a build-cdp-only job to dotnet.yml so this is caught before a release, not after. Also bumped the patch version to 25.3.1.

Test plan

  • dotnet build lib/PuppeteerSharp/PuppeteerSharp.csproj /p:DefineConstants=CDP_ONLY --configuration Release --no-incremental succeeds
  • dotnet build lib/PuppeteerSharp.sln --configuration Release succeeds
  • dotnet format ./lib/PuppeteerSharp.sln --verify-no-changes --exclude-diagnostics CA1865 clean

kblok added 2 commits July 3, 2026 14:21
…dard2.0 build

ScreenRecorder relies on System.Threading.Channels, which isn't part of the
netstandard2.0 BCL. It compiled fine in the normal build only because the
WebDriverBiDi package transitively pulled it in; the CDP-only build excludes
WebDriverBiDi and failed on release. Add the package reference directly, and
build the CDP-only target in CI so this is caught before a release tag, not
after.
@kblok kblok added the bug label Jul 3, 2026
@kblok
kblok merged commit db179d0 into master Jul 3, 2026
27 of 28 checks passed
@kblok
kblok deleted the fix-cdp-only-netstandard-build branch July 3, 2026 19:45
sondresjolyst pushed a commit to sondresjolyst/garge-api that referenced this pull request Jul 13, 2026
Updated [PuppeteerSharp](https://github.com/hardkoded/puppeteer-sharp)
from 25.2.1 to 25.3.1.

<details>
<summary>Release notes</summary>

_Sourced from [PuppeteerSharp's
releases](https://github.com/hardkoded/puppeteer-sharp/releases)._

## 25.3.1

## What's Changed
* fix: CDP-only netstandard2.0 build failure with
System.Threading.Channels by @​kblok in
hardkoded/puppeteer-sharp#3512


**Full Changelog**:
hardkoded/puppeteer-sharp@v25.3.0...v25.3.1

## 25.3.0

## What's New 
* chore: roll Firefox to 152.0.4 (upstream #​15158, #​15195) by @​kblok
in hardkoded/puppeteer-sharp#3510
* chore: bump version to 25.3.0 by @​kblok in
hardkoded/puppeteer-sharp#3511
* New Feature: support installing extensions for browser contexts
(#​15164) by @​kblok in
hardkoded/puppeteer-sharp#3509

## What's Changed
* Fix: handle swaps without a timer (#​15198) by @​kblok in
hardkoded/puppeteer-sharp#3507
* fix: don't set newWindow=true when no targets exist by @​kblok in
hardkoded/puppeteer-sharp#3482
* fix: normalize duplicate set-cookie headers using newline (upstream
#​15173) by @​kblok in
hardkoded/puppeteer-sharp#3508


**Full Changelog**:
hardkoded/puppeteer-sharp@v25.2.1...v25.3.0

Commits viewable in [compare
view](hardkoded/puppeteer-sharp@v25.2.1...v25.3.1).
</details>

[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=PuppeteerSharp&package-manager=nuget&previous-version=25.2.1&new-version=25.3.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant