Предполагая, что ваш код представляет собой только «управляемый код» (т. Е. C # или компиляция, аналогичную IL), у вас не возникнет проблем со сборкой в одной операционной системе и в другой, если эта операционная система поддерживает все библиотеки, которые вы используете. повторное использование. Это так, даже если вы используете библиотеки, которые сами по себе содержат собственный код, при условии, что он правильно упакован.
Становится сложнее, если ваш собственный код включает нативный код (например, C ++) - в этот момент вам нужно будет выполнять кросс-компиляцию для каждой операционной системы и выбранной вами архитектуры. Это менее вероятно, однако. Если вы делаете это, вы, вероятно, знаете, что делаете это:)
Обратите внимание, что вам нужно будет решить, что вам нужно поставлять вместе с вашим приложением, с точки зрения библиотек и т. Д., И каковы требования с точки зрения уже установленного Mono или .NET Core.
Если вам не нужны моно-специфичные библиотеки, я бы лично предложил на этом этапе использовать .NET Core, а не Mono. Mono в настоящее время является лучшим решением для развертывания на мобильных устройствах (Xamarin, Unity), но если вам нужно работать только на настольных компьютерах и вы не используете библиотеки Mono, я считаю, что .NET Core - более удобное решение.