It depends on how you want to do it, and which OS you use.
If you use Linux, you can use the OS scheduler - cron. Or AnaCron.
If you you Windows, you could use Windows task scheduler.
Cron will probably work on MacOS too, though I suppose they have their own task-scheduler.
If you're using your application on Azure/AWS/DigitalOcean/AppEngine, then they all probably have facilities to do this.
There is a library to do job scheduling in .NET, it's called Quartz.
I don't know if they've ported to .NET Core yet, but I suppose they have.
Also, if you're using your application inside an ASP.NET (Core) application, I don't know how this is with IIS recycling the app-pool after 20 minutes of inactivity. If it does, then you can't do it in ASP.NET or you need to change the application's or IIS's configuration.
Note: According to this, the ASP.NET Core application definitely gets stopped when IIS recycles the app-pool, even though IIS would only have to recycle the reverse-proxy.
One of the ways we have done it in the past, is having an ashx handler in the application, which does the job once (using JWT header authentication so no DOS/DDOS is possible).
Then we just have a program running somewhere that issues a get request to the ashx handler every hour. This ensures the task is run every hour, and it lets IIS recycle the app-pool. Because that means IIS potentially needs to start then entire application, you should increase the get request's timeout accordingly. That system is simple, and it works the same everywhere, dev-machine, on-premise, self-hosted, shared-hosting, azure, aws, appengine, digitalocean, etc. and it doesn't even require any library.
Best of all, in its simplest form, you can just use wget and cron, which is really simple, and you can do rather complicated stuff with that, e.g run a program at the last day of the month (28,29,30,31) at 01:05, or like every 1st friday of the month, or on every monday-saturday from 4 to 23 o'clock, every 13 minutes starting 04:23, or whatever the hell you want.
ZERO .NET programming required at all for the job scheduling.