HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
dotnet
sdk
C#2020–2026
dotnet / sdk

sdk

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI

46Distinct people
61Mentions
1Explicit recommenders
3.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Core functionality needed to create .NET Core projects, that is shared between Visual Studio and CLI

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

https://github.com/dotnet/sdk/issues/6145 My favorite part is when someone figures out "telemetry" includes the MAC address, and the dev team just goes completely silent.

craftinator used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year61 dated mentions

Observed mentions: 2020-05-21 14:25:34 UTC to 2026-07-27 09:32:34 UTC.

01020302020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20202021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 30 mentions; 4 submissions, 26 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 8 mentions; 0 submissions, 8 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 7 mentions; 1 submissions, 6 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC202
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC30426
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC808
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC716
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC505
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC505
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC404

From the project README

An excerpt from the repository, fetched Nov 13, 2026.

Read the project’s introduction
Welcome to dotnet sdk This repository contains core functionality needed to create .NET projects that are shared between Visual Studio and the .NET CLI. MSBuild tasks are under /src/Tasks/Microsoft.NET.Build.Tasks/. See dotnet/project-system for the project system work that is specific to Visual Studio. See the dotnetup documentation for work on the .NET toolchain manager. Dotnetup changes should target the release/dnup branch rather than main. Common project and item templates are found in template_feed. Build status Visibility All jobs Public Microsoft Internal Installing the SDK You can download the .NET SDK as either an installer (MSI, PKG) or a zip (zip, tar.gz). The .NET SDK contains both the .NET runtime and CLI tools. Official builds .NET SDK latest builds table Looking for dotnet-install sources? Sources for dotnet-install.sh and dotnet-install.ps1 are in the install-scripts repo. How do I engage and contribute? We welcome you to try things out, file issues, make feature requests and join us in design conversations. Be sure to check out our project documentation This project has adopted the .NET Foundation Code of Conduct to clarify expected behavior in our community. How do I build the SDK? Start with the Developer Guide. How do I test an SDK I have built? To test your locally built SDK, run eng\dogfood.cmd after building. That script starts a new Powershell with the environment configured to redirect SDK resolution to your build. From that shell your SDK is available in: any Visual Studio instance launched via & devenv.exe dotnet build msbuild How do I determine the timeline I must follow to get my changes in for a specific version of .NET? Please see the Pull Request Timeline Guide. How we triage and review PRs With the SDK repository being the home for many different areas, we've started trying to label incoming issues for the area they are related to using Area- labels. Then we rely on the codeowners to manage and triages issues in their areas. Feel free to contact the owners listed in that file if you're not getting a response on a particular issue or PR. Please try to label new issues as that'll help us route them faster. For issues related to the central SDK team, typically they are assigned out to a team member in the first half of each week. Then each member is asked to review and mark those needing further discussion as "needs team triage" and otherwise setting a milestone for the issue. Backlog means we will consider it in the future if there is more feedback. Discussion means we have asked for more information from the filer. All other milestones indicate our best estimate for when a fix will be targeted for noting that not all issues will get fixed. If you are not getting a quick response on an issue assigned to a team member, please ping them. The example query used for triage of .NET SDK issues can be viewed here For PRs, we assign a reviewer once a week on Wednesday, looking only at PRs that are green in the build. If you are contributing: Get the PR green. Include a test if possible. Mention @dotnet-cli if you want to raise visibility of the PR. License The .NET SDK project uses the MIT license. The LICENSE.txt and ThirdPartyNotices.txt in any downloaded archives are authoritative.
Read the full README on GitHub

What Hacker News says

61 sources
.NET also comes with "telemetry" built-in that sends your data to Microsoft without asking for your consent: https://github.com/dotnet/sdk/issues/6145 I wouldn't want to run software from someone who thinks taking such liberties with my machine and my data is OK. > so pleasant you don’t even think about it I'm sure Microsoft would prefer that people don't think about Microsoft is doing to them. But when do you think about it, you might reconsider using Microsoft software.
In Some more things about Django I've been enjoying
>It starts by not looking into Windows through UNIX developer glasses. People don't need any UNIX biases to just want multiple versions of MSVS to work the way Microsoft advertises. For example, with every new version of Visual Studio, Microsoft always says you can install it side-by-side with an older version. But every time, the new version of VS has a bug in the install somewhere that changes something that breaks old projects. It doesn't break for everybody or for all projects but it's always a recurring bug report with new versions. VS2019 broke something in existing VS2017 installs. VS2022 broke something in VS2019. etc. The "side-by-side-installs-is-supposed-to-work-but-sometimes-doesn't" tradition continues with the latest VS2026 breaking something in VS2022. E.g. https://github.com/dotnet/sdk/issues/51796 I once installed
Read the rest
VS2019 side-by-side with VS2017 and when I used VS2017 to re-open a VS2017 WinForms project, it had red squiggly lines in the editor when viewing cs files and the build failed. I now just install different versions of MSVS in totally separate virtual machines to avoid problems. I predict that a future version VS2030 will have install bugs that breaks VS2026. The underlying issue that causes side-by-side bugs to re-appear is that MSVS installs are integrated very deeply into Windows. Puts files in c:\windows\system32, etc. (And sometimes you also get the random breakage with mismatched MSVCRT???.DLL files) To avoid future bugs, Microsoft would have to re-architect how MSVS works -- or "containerize" it to isolate it more. In contrast, gcc/clang can have more isolation without each version interfering with each other. I'm not arguing this thread's msvcup.exe tool is necessary but I understand the motivations to make MSVS less fragile and more predictable.
In I fixed Windows native development
Python has an elected steering council and core team. The governance process explicitly tries to avoid conflict of interest by disallowing more than two steering council members working for the same employer. See PEP 13 [1]. By contrast, .NET is controlled by Microsoft (with veto over board decisions [2] and code changes [3]), integrates Microsoft's telemetry to send your data to Microsoft by default [4] and deliberately hobbles features to benefit Microsoft [5]. [1] https://peps.python.org/pep-0013/ [2] https://dotnetfoundation.org/about/policies/.net-foundation-... [3] https://github.com/dotnet/runtime/blob/main/CONTRIBUTING.md [4] https://github.com/dotnet/sdk/issues/6145 [5] https://github.com/dotnet/sdk/issues/22247
In The history of C# and TypeScript with Anders Hejlsberg [video]
> From a user perspective, "dotnet run" does add a new scripting dialect. By dialect I mean that in CSX, the C# language has subtle differences in behavior compared to CS files (e.g., top-level methods are compiled differently). In 'dotnet run app.cs', the C# is exactly the same, hence it can be converted to a project (and we have a command for that - 'dotnet project convert'). > It's just a preprocessor - not a change to the C# syntax. Should #:load work in normal C# files as well then? If yes, we would have two ways to include files - the normal way (include them in the project) or via #:load. If not, how would 'dotnet project convert' work? (It could paste the text but that's not very DRY if it's imported at multiple places.) That's in short why #:load doesn't play very nicely with existing C# (it's a different paradigm of including ot
Read the rest
her files). So the current proposal is to just make files in the same folder visible (just like they would be for a .csproj), because that's consistent with current C#, 'dotnet project convert' works, etc. But this proposal is not final yet, there are other options including what you suggest - see https://github.com/dotnet/sdk/issues/49193.
In Run a C# file directly using dotnet run app.cs
> You can't do much of anything in .NET without referencing Nuget assemblies. And referencing NuGet assemblies is of course supported via the #:package directive. It's just that referencing DLLs directly is not a common scenario, hence it's not supported for now (but can be added later). > Agreeing with others, '#r "nuget:' should at least be an option. Thanks, we hear you and plan to add support for it, see https://github.com/dotnet/sdk/issues/49199 > And otherwise (but I guess regarless if you stick with this syntax) you will have to add another tab to Nuget called "dotnet run". "Script & Interactive" is already present in Nuget and shows the #r syntax for a reference. Agree but also note that the ".NET CLI" tab which tells you to run "dotnet add package" should also work in near future, see https://github.com/dotnet/sdk/issues/49200.
In Run a C# file directly using dotnet run app.cs
It's not about being "cool" It's about the motives "it's open source" "it now works on linux" it all doesn't matter if they'll go after your ass if you dare build tooling with their debugger (jetbrains) or when they want to remove a feature overnight to make it exclusive to visual studio windows and behind a paywall https://github.com/dotnet/sdk/issues/22247 it's this kind of things that makes it hard to recommend it to people, and Microsoft can't be trusted
In Ask HN: Why is .NET never talked about as an option for solo/small team dev?
I hate to defend telemetry of all things but in this particular case the criticism is unfounded and lacks context: https://dotnet.microsoft.com/en-us/platform/telemetry https://learn.microsoft.com/en-us/dotnet/core/tools/telemetr... https://github.com/dotnet/sdk/tree/main/src/Cli/dotnet/Telem... In any case, Debian would use https://github.com/dotnet/source-build and dotnet/dotnet, and could easily include the argument or a patch for this. It’s unlikely to be an issue. My bet it was not in Debian because there was no one to take initiative yet or there was but that person has faced a backlash by people in Debian who are similar to vocal minority here that posts FUD because of their little personal crusade.
In Microsoft donates the Mono Project to the Wine team
FWIW .NET tooling telemetry can be easily opted-out, which the SDK explicitly tells you about, and there is a page that has full list of the kind of data that is collected (CLI usage metrics and tooling crash stack traces). You can also review the metrics yourself. About: https://learn.microsoft.com/en-us/dotnet/core/tools/telemetr... Collected metrics: https://dotnet.microsoft.com/en-us/platform/telemetry Source code: https://github.com/dotnet/sdk/tree/main/src/Cli/dotnet/Telem... In either case, many teams have CIs with 'DOTNET_CLI_TELEMETRY_OPTOUT=1' and call it a day even if it makes no difference to them.
In Go 1.23 Released
They used to gather all command line arguments until they later decided that (oops!) it's "not acceptable per our privacy policies"[0] and they really shouldn't have been doing that. They have also had issues with anonymization not being implemented properly, the opt-out mechanism not working in some edge cases, forgetting to even tell users about the need to opt out, and who knows what else. The risk of accidentally exfiltrating your data one way or another seems pretty high. Also, monetary value is not the only reason you might want to keep information private. [0] https://github.com/dotnet/sdk/issues/6145#issuecomment-22010...
In Microsoft blocks Windows 11 workaround that enabled local accounts
> There's definitely things they tried to improve on that... weren't really improvements. The way "assemblies" are matched in .NET is much more sophisticated- the goal there was to try to kill DLL hell. It evolved into the Global Assembly Cache, which is sort of the Windows Registry of DLLs. Not a huge fan of those bits. The Global Assembly Cache did not make the jump to the modern .NET (Core). There was the thing called `dotnet store`, but it’s broken since .NET 6: https://github.com/dotnet/sdk/issues/24752 The assembly redirection hell has also been greatly reduced there.
In Swift was always going to be part of the OS (2022)

Showing the 15 most recent of 61 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.