#linux #visual-studio #msbuild #mono
#linux #visual-studio #msbuild #mono
Вопрос:
Совместимы ли двоичные файлы, скомпилированные с Visual Studio или msbuild в операционной системе Windows, на 100% с запуском под Mono в Linux? Например, могу ли я скомпилировать двоичный файл в Visual Studio или msbuild в Windows, а затем упаковать его для использования в Linux, или мне нужно будет собрать двоичный файл с использованием mono в операционной системе Linux, чтобы обеспечить полную совместимость?
В частности, мне нужно знать, будет ли двоичный файл, созданный в Visual Studio 2019, на 100% совместим с Linux с использованием Mono 5.10
Комментарии:
1. В Mono нет «полной совместимости». Пожалуйста, перейдите на .NET Core.
2. Предполагая, что вы используете один и тот же «поддерживаемый фреймворк» на обеих платформах и не используете собственные функции Windows, тогда да. Но .Net Core заменяет Mono в 2021 году, вам действительно следует перенести новое, если вы начинаете новую разработку.
Ответ №1:
Во многих случаях двоичные файлы, которые вы создаете в Windows, будут отлично работать под Mono или .NET Core в Linux. Тем не менее, многие интерфейсы будут работать на обоих .NET Core будет более полным.
Однако единственный способ узнать наверняка — это протестировать. Даже если вы создали идеальные двоичные файлы и Mono поддерживал каждый вызываемый API, вы все равно могли бы использовать пути с обратной косой чертой в них, которые Linux поддерживать не будет. Вы не узнаете этого, пока не запустите свой testsuite в Linux с нужным вам интерпретатором. Именно здесь может помочь подходящая настройка CI, поскольку она позволяет запускать большинство этих тестов автоматически.
Комментарии:
1. Спасибо @bk2204 Могу я просто уточнить, вы бы сказали, что безопаснее создавать проект в mono в Linux, если он будет использоваться в среде Linux, а не создавать его на ОС, на которой он не предназначен для запуска, такой как Windows? Мне кажется, что первый подход является более подходящим.
2. Если вы хотите запустить его в Linux, я бы определенно сказал, что вам следует собрать (и протестировать) его в Linux. Это почти всегда самый безопасный вариант, если он доступен.