Right or wrong in these things is relative. Everything works and in general is not falling apart. It is often precious to try to do so right so long as know what you’re doing. Without knowing even the right is not good.
I find your project too layered, but it’s just my general opinion.
In general it’s confusing to have helpers generic like this, but there are cases that are the best solution. We have no way to answer this.
It may be in helpers organize well, not become a heap of things. These helpers may be extension methods. Or they may be in some type that is not just one helper, perhaps even in an existing type. It can neither separate too much nor add too much.
Apart from that must put the helper, if it is appropriate to have one, in the place where it makes the most sense, it can be totally separated from the rest (for what it has gone through, it seems to be the case of almost everything) or it can be in one of these layers, depends on whether it is for use only in it. Don’t put something in a specific location and use it everywhere in the solution. Separate what is general library from the application. Not necessarily how helper.
In most of the projects I’ve worked on these types of class have always been at the Crosscutting/Infrastructure layer. And if they’re really used by all the layers then there’s no better place than this.
– Marco Souza