Last updated: November 13, 2026
By Jennifer Burdick, Recruiting Manager, KORE1
A C# developer job description should state what the hire will build, the .NET version each project targets, whether the work needs a Windows computer, and a base pay range. Most postings list libraries and leave the machine out. Base pay for a mid-level hire runs from $105,000 to $155,000, depending on the kind of C# work.
The line missing from most C# postings I read at KORE1 is the one about the computer. Skills each get a bullet. LINQ, Entity Framework, async and await, Azure. The laptop gets nothing, and for a good share of C# work that omission decides whether the new hire can open the code on day one.
Here is a made-up case, assembled from patterns I see, with no client behind it. A freight-audit company on the north side of Columbus, about 120 people, posts a senior C# developer seat. The product has three parts. A customer portal on ASP.NET Core, a nightly batch service, and a desktop client the auditors use all day, written in WinForms on .NET Framework 4.8 in 2013 and never rewritten. The posting lists C#, SQL Server, Azure, and Angular. Under benefits, to sound current, it says “Mac or PC, your choice.”
The finalist picks a MacBook. On day three he clones the repository and finds that the desktop project will not open. The portal runs fine. The program the auditors live in does not build on his machine, and it never will.
He loses a week. So does the manager who promised him the choice.
Know where I sit before you take the advice. KORE1 earns a fee when a company hires a C# developer we introduced, so I would rather see your posting get it right the first time than watch it stall in week six. Our C# developer staffing desk fills backend, Unity, and desktop seats, and this page covers only the posting. Pay by source lives in the C# developer salary guide, the four kinds of C# hire are sorted in our guide to hiring C# and .NET developers, and the interview round is in the C# developer interview questions.

What a C# Developer Builds, Named by Project
A C# developer writes and maintains software in C# on Microsoft’s .NET platform. The work covers ASP.NET Core web services, Azure functions, WPF and WinForms desktop clients, Unity games, and background services that run overnight. The title almost never says which of those the seat is, so the posting has to.
A plain “C# Developer” headline pulls web engineers, desktop engineers, and game programmers into one pile, and none of the three can do the others’ jobs without a long ramp. Our C# page explains why a C# search and a .NET search are often different searches. A Unity seat belongs on the game developer job description template, which was written for that work. Everything below assumes a business application, meaning a web service, a desktop client, or both.
The Project File Tells You Which Computer to Offer
Open the solution and look inside each project for the file that ends in .csproj. Near the top sits one line that names the target framework, called TargetFramework in current project files and TargetFrameworkVersion in older ones. That single line answers three questions a posting should answer. Which version of .NET the project runs on. Whether it is the old .NET Framework. And whether the developer needs Windows.
Microsoft’s list of target framework monikers explains the last part. A moniker such as net10.0 includes technologies that work across platforms. An OS-specific moniker, such as net10.0-windows, makes available the APIs of one operating system, and Windows Forms is Microsoft’s own example. The documentation for Windows Presentation Foundation is blunter. Even though .NET is cross-platform, it says, WPF only runs on Windows, and .NET Framework 4 is a Windows-only version of .NET.
| Project type | Target framework you will see | Runs on | For a developer on a Mac |
|---|---|---|---|
| ASP.NET Core service or API | net10.0 or net8.0 | Windows, macOS, Linux | Full work in VS Code with the C# Dev Kit, or in JetBrains Rider |
| WPF or WinForms client on current .NET | net10.0-windows | Windows only | Needs a Windows machine, virtual or cloud, to run it |
| Anything on .NET Framework, including WebForms and WCF | net48 or net481, or v4.8 in an older project file | Windows only | Needs a Windows machine, virtual or cloud, to run it |
| A solution holding both kinds | Two or more of the above | Windows for the whole solution | Web projects only, until a Windows machine is added |
The Mac column used to have an easy answer. Visual Studio for Mac was retired on August 31, 2024, and Microsoft pointed Mac developers to the C# Dev Kit for VS Code and to Visual Studio on Windows reached through Microsoft Dev Box. That is why a Mac developer on a mixed solution now needs a second machine somewhere, and why the second machine belongs in your posting.
So the posting says one of three things. Windows is issued to everyone. Or a developer may choose a Mac and will use a Windows virtual machine or a cloud Windows machine for the desktop projects. Or Mac is welcome for the web projects only. Never write “Mac or PC” unless every project builds on both. Check it by cloning the repository onto a Mac and building it. Ten minutes.

Developers have strong feelings about their computers, and a candidate who reads “Windows required for the claims desktop client” decides in one sentence. That is the point of printing it.
Name the Projects Before You Name the Skills
Three to five lines is plenty. Each line gives the project, what it does, and what it targets. In the Columbus case the list reads customer portal, ASP.NET Core on .NET 10. Nightly batch service, same. Auditor desktop client, WinForms on .NET Framework 4.8, no rewrite planned.
Three lines. A reader who knows C# now knows the stack, the age of the oldest code, the Windows requirement, and that somebody has decided to leave the 2013 client alone. No skills list tells a candidate that much.
Versions go on the same lines. Both .NET 8 and .NET 9 went out of support on November 10, 2026, so a project still targeting either one is a project with a deadline, which our .NET 8 end-of-life planning guide walks through. If the seat includes that move, say so in the project line. The salary guide has a section on why the runtime on the posting changes the search, so this page does not repeat it.
C# Developer Job Description Template
Text in square brackets is yours to fill. Lines in italics are notes to the writer, so delete them before the posting leaves the hiring team. The project list, the computer, and the pay range do the real work. The rest is ordinary.
Job Title
[C# Developer, Claims Desktop Applications / Senior C# Developer, ASP.NET Core Services / C# Developer, WPF Instrument Software / Senior .NET Developer, Azure Integrations]
Name the project type. The platform word matters less than the kind of work.
About the Role
[Company] [does what] for [customers]. You will join a team of [number] developers working on [product], reporting to [title]. The seat is [on-site in (city) / hybrid, (number) days a week in (city) / remote within (states)].
What You Will Build
- [Project name], [what it does and who uses it], built on [ASP.NET Core / WPF / WinForms / Azure Functions] and targeting [.NET 10 / .NET 8, moving to .NET 10 by (date) / .NET Framework 4.8].
- [Project name], [what it does and who uses it], built on [framework] and targeting [version].
- [Project name], [what it does and who uses it], built on [framework] and targeting [version].
Include the oldest project, even if nobody is proud of it. Candidates find it in week two.
Your Computer and Tools
We issue [a Windows laptop / a MacBook / a choice of either]. [Our solution includes (WPF / WinForms / .NET Framework) projects, which run only on Windows. Developers who prefer a Mac work on the (web) projects in (VS Code with the C# Dev Kit / JetBrains Rider) and use (a Windows virtual machine / a cloud Windows machine) for the rest.] The company licenses [Visual Studio, (edition) / JetBrains Rider], and you may use [another editor] on any project it supports. On your first day you will have access to [a development database / a test environment].
Delete the bracketed sentence about Windows only if every project builds on every operating system.
How We Ship
[Azure DevOps / GitHub Actions] builds and tests every pull request. Releases go out [weekly / monthly / when (title) approves]. You [will / will not] be on call, [one week in (number)], and on-call is [paid through (a stipend / comp time) / unpaid for now, and we intend to fix that].
What You Will Do
- Build and maintain [features, services, or screens] across the projects listed above
- Review pull requests from [number] teammates, and have yours reviewed in return
- Write unit and integration tests in [xUnit / NUnit / MSTest]
- Track down production defects using [Application Insights / Serilog logs / (monitoring tool)]
- [Move (project) from .NET Framework 4.8 to .NET 10 over (timeframe)]
- Leave notes in the repository that the next developer can follow without asking you
What You Bring
- [Number]+ years writing C#, with at least [number] on [the runtime we use]
- You have shipped a [web service / desktop application] to production, and you can describe a defect you found in it after release
- Working knowledge of [Entity Framework Core / Dapper] and [SQL Server / PostgreSQL], including how to read a query plan
- [Experience with (WPF / WinForms), because the desktop client is part of the job]
- [Comfort working on Windows every day]
Keep the last two lines only if the seat truly needs them.
Nice to Have
- [Experience moving a project from .NET Framework to current .NET]
- [Pipeline work in Azure DevOps or GitHub Actions]
- [Angular or React, if the portal has a front end you would touch]
Pay, Benefits, and Location
The base salary range for this role is $[low] to $[high], [plus (bonus target)]. Where an offer lands depends on [experience and the project mix]. Benefits include [medical, dental, and vision / 401(k) with (match) / (number) days of paid time off / an equipment and training budget].
Print the range on every copy, including the ones an agency runs. Columbus will require it from January 1, 2027, and several other places already do.
How to Apply
[Link or address]. [Company] is an equal opportunity employer, and we provide reasonable accommodations to qualified applicants. To request one, contact [name or address].
The Range, and What Columbus Starts Enforcing in January
These are the same bands as our hiring guide and salary guide, so a posting built from this page will not contradict either of them. Post the row that matches your first project line. A posting that describes senior work and pays the mid row is the pattern that stalls.
| Kind of C# seat | Mid-level base | Senior base |
|---|---|---|
| Modern .NET web API and microservices | $118,000 to $145,000 | $155,000 to $200,000 |
| Legacy .NET Framework maintenance | $105,000 to $130,000 | $140,000 to $175,000 |
| Azure-native .NET engineer | $125,000 to $155,000 | $165,000 to $210,000 |
| Full-stack C# with Angular or React | $120,000 to $148,000 | $158,000 to $198,000 |
Base salary, United States, before any metro adjustment. For one city, the salary benchmark assistant is quicker than any table. The Columbus freight-audit seat has a modern .NET portal, a Framework 4.8 desktop client, and a batch service, so it straddles two rows, and the honest move is to post the row for the work the hire will do most.
Columbus is the reason this section exists. The city amended Chapter 2335 of its code through Ordinance 2898-2025, and the amendment took effect December 3, 2025, but the city does not begin enforcing the posting rule until January 1, 2027. That is seven weeks from this writing. It covers employers with 15 or more employees within the City of Columbus, and it requires every covered posting to carry a “reasonable salary range or scale.”
Three details matter to a C# employer. The ordinance does not define “reasonable.” It lists factors instead, including the flexibility of the budget, the range of experience applicants may have, the cost of living, and market research on comparable positions, as Littler’s summary lays out. A range that stretches from the mid-level floor to the senior ceiling, say $118,000 to $200,000, does not tell an applicant much, and I cannot tell you where the city draws its line.
The second detail is who counts. Vorys notes that the ordinance applies to placement and referral agencies working for a covered employer, and that a posting means any solicitation to recruit for a specific position that describes the job or the qualifications, whether the employer or a third party runs it, online or in print. The third is smaller. It covers wages and other monetary pay, not benefits, and internal transfers and promotions are exempt. An applicant who thinks a posting broke the rule can complain to the city’s Community Relations Commission, according to the Vorys analysis, which also says there is no private right of action.
Columbus is one of the metros where our hiring guide finds a deep .NET bench, mostly around insurance and claims work, so this rule will reach C# postings sooner than most. I am a recruiter, not a lawyer. Ask counsel about the edges.

Open Items Before the Posting Goes Live
Can a C# posting fairly require Windows?
Fair, whenever the solution holds WPF, WinForms, or .NET Framework projects, because none of those run on macOS or Linux. State the requirement and name the project that causes it.
A Windows virtual machine or a cloud Windows machine for a Mac user is a reasonable middle path, and Microsoft itself points Mac developers to a cloud-hosted Windows machine for the full Visual Studio. Candidates respect a stated reason. They resent one discovered on day three.
C# or .NET in the title, which one wins?
Neither alone. Put the kind of work first and the platform second, as in “C# Developer, Claims Desktop Applications.”
The two words describe different searches more often than people expect, and we explain how we sort C# searches from .NET searches on our staffing page.
Should the posting say anything about AI coding assistants?
One sentence is enough. Say whether developers may use them, which ones the company pays for, and whether generated code goes through the same review as everything else.
Candidates ask in the first call, and a blank answer sounds like a policy that does not exist yet. Assistants write passable C# now, which is part of why interviews matter more in 2026.
Contract or direct hire for a C# seat?
Contract fits work with an end date, such as a .NET upgrade or a desktop rewrite, and direct hire fits a developer who will own the codebase for years.
Put both jobs in one posting and you attract people who want neither. The time-boxed upgrade squad is the usual contract case, and the .NET 8 guide above describes one. Our contract staffing and direct hire staffing teams run the two searches differently, and a senior contract C# developer runs $100 to $140 an hour in our hiring guide.
Does an agency’s version of the posting need the Columbus range too?
The ordinance names placement and referral agencies acting for a covered employer, so the agency’s copy needs the range as well.
Settle in writing which of you writes the number, and check that both copies match. Two postings with two ranges is a problem nobody wants to explain.
Does the ordinance reach a remote C# developer for a Columbus company?
It applies to jobs performed within the City of Columbus, so a remote developer who lives and works outside the city limits may fall outside it. I cannot say how the city treats a hybrid seat.
Ask counsel, then consider printing the range anyway. Other jurisdictions reach remote seats differently, and one posting usually runs in several places at once.
Read the Project File Before You Post
The freight-audit company reposted with three project lines, one sentence about the computer, and a range of $155,000 to $200,000, the senior row for modern .NET. Fewer people applied. The finalists had either run a WinForms client before or knew they would spend their days in the portal repository. Nobody was surprised on day three.
If a second reader would help, send the project list and your draft to our C# recruiting team, and we will tell you which of the four kinds of C# search it describes. Our own figures, for comparison with anyone else’s, are 17 days for the average IT search and a twelve-month retention rate of 92 percent across the people we place.

