Как .NET Core может поддерживать работу в операционных системах Windows, Linux и Mac?

#asp.net-core #.net-core #.net-5

#asp.net-core #.net-core #.net-5

Вопрос:

Допустим, у меня есть библиотека классов, которая использует System.IO.StreamWriter тип в одном из своих классов, и у меня есть netcoreapp3.1 ASP.NET Основное веб-приложение, использующее эту библиотеку. Я хотел бы запустить это веб-приложение в операционных системах Windows, Linux и Mac.

Может ли кто-нибудь объяснить мне, как все работает под капотом, когда я вызываю StreamWriter.WriteAsync метод, например?

  • Перенаправляются ли мои вызовы этого типа метода в «соответствующую» версию среды выполнения? т.е
    1. В Windows вызов этого метода перенаправляется в среду выполнения .NET Core реализации библиотеки Windows netstandard ?
    2. В Linux вызов этого метода перенаправляется в среду выполнения .NET Core реализации библиотеки Linux netstandard ?
    3. В Windows вызов этого метода перенаправляется на полный .Среда выполнения NET Framework (например, 4.7) для реализации библиотеки Windows netstandard ? Предположим, я также ссылаюсь на эту библиотеку классов из приложения .NET Framework 4.7.
  • Будет ли это похоже и в .NET 5? т.е. Если моя библиотека классов построена с использованием net5.0 и используется .net5.0 ASP.NET веб-приложение и запускается в операционных системах Windows, Linux и Mac, то перенаправляются ли вызовы net5.0 типа API в реализации отдельных операционных систем? net5.0

Комментарии:

1. Какую версию стандартной библиотеки net вы используете? Из класса StreamWriter этот класс применяется к .net core и Xamarin.Mac, поэтому для вопросов 1 и 2 я думаю, что этот метод (приложение .net core) хорошо работает в Windows и Linux, для вопроса 3, если вы используете .net Framework, поскольку он не является перекрестным.платформа, приложение не будет хорошо работать на других ОС. Для .NET 5 см. .NET 5 и .NET Standard далее в этой статье .

2. Спасибо за ответ @ZhiLv. Я использовал StreamWriter его просто в качестве примера, чтобы проиллюстрировать тип, который может варьироваться в зависимости от платформы операционной системы.