# C# "CS0535: does not implement interface member" in CI

> Fix C# "CS0535: T does not implement interface member I.M" in CI - a class that claims an interface but is missing a required member, often after the interface changed.

Source: https://latchkey.dev/learn/dotnet/dotnet-cs0535-interface-member-not-implemented-in-ci  
Updated: 2026-06-26

CS0535 means a type declares an interface but does not provide one of its members. In CI this commonly surfaces after a package or shared contract added a new interface method that the implementing class has not caught up to yet.

## Diagnose it: SDK version and restore first

Most .NET CI failures are an SDK mismatch or a restore that did not happen. `global.json` pins the SDK, and if the runner does not have that exact version the failure message is about the project rather than the SDK.

```Terminal
dotnet --info
cat global.json 2>/dev/null

# restore explicitly so a restore failure is not reported as a build failure
dotnet restore --verbosity normal
dotnet build --no-restore -warnaserror
```

> Pin the SDK with `global.json` and install exactly that version with `actions/setup-dotnet`. A floating SDK turns a runner image update into a build break on unchanged code.

## FAQ

### What causes C# "CS0535: does not implement interface member" in CI?

There are 2 common causes: the interface gained a member the class lacks and a signature mismatch. An upstream interface added a method (or the signature changed) and the implementing class was not updated, leaving the contract unsatisfied.

### How do I fix C# "CS0535: does not implement interface member" in CI?

Implement the member exactly. Copy the interface member signature and add the missing implementation.

### What does C# "CS0535: does not implement interface member" in CI actually mean?

The build fails with CS0535 naming the type, the interface, and the unimplemented member.

### How do I stop C# "CS0535: does not implement interface member" in CI happening again?

Pin shared-contract packages so interface surfaces do not shift mid-stream. The prevention section lists 2 changes that keep it from recurring.

---

Latchkey runs CI/CD that repairs its own failures. Agent entry points: https://latchkey.dev/agent.txt, https://latchkey.dev/openapi.json, https://latchkey.dev/llms.txt
