Desktop MonoGame Clarification


I am planning to start a 2D game using MonoGame this summer. My main goal for the project is that it will be cross platform between Max, Linux, and Windows.
I have looked at some example projects where people have made shared libraries for the bulk of their game logic, then built platform specific projects which all referenced the same library code.
I was wondering if this construction is necessary for a desktop game. If I build a project on my mac today, will it fail to compile/run on a windows or linux machine?
If so, what are the kinds of things that may work on my Mac, but not on a Windows computer? What would be different in platform specific versions I would need to make?

Thanks for the help,

I recommend using a DesktopGL project, which will run on Windows, macOS, and Linux. Anything native to a specific OS won’t work on the other machines (Ex. System.Windows.Forms).

Be aware that there is trouble compiling shaders on non-Windows platforms, but there is a solution involving compiling via a remote Windows machine. I’m not sure if this is still valid or which other options are available.