Задать вопрос
Dyikot
@Dyikot

Как сделать мультиплатформенный проект c# используя Visual Studio?

Я создал проект по шаблону Worker Service. Мне нужно чтобы проект поддерживал Windows и Linux. Я создал папку Platforms и туда поместил Linux и Windows папки. Они нужны чтобы там хранился код специфильный для данной платформы.
Пока имею следующие настрйоки проекта:
<PropertyGroup>
  <TargetFrameworks>net9.0;net9.0-windows10.0.19041.0</TargetFrameworks>
  <RuntimeIdentifiers>win-x64;linux-x64</RuntimeIdentifiers>
  <!--other...-->
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0-windows10.0.19041.0'">
  <DefineConstants>WINDOWS</DefineConstants>
</PropertyGroup>

<PropertyGroup Condition="'$(TargetFramework)' == 'net9.0'">
  <DefineConstants>LINUX</DefineConstants>
</PropertyGroup>

При этом не знаю как разделить проект на два фреймворка чтобы выбирать из раскрывающегося спиcка нужный фреймворк и тем самым выбирались директивы предпроцессора и соответсвенно путь для билда. И чтобы при переходи в соотвествующую папку выбирался нужный проект (По сути как в MAUI).
И как при этом устанавливать NuGet пакеты для платформы?

UPD. При перезапуске VS раскрывающий спиcок фреймворков появился. Но теперь как сделать чтобы при открытии файла например Platfoms\Windows\Test.cs выбирался соответсвующий фреймворк?
  • Вопрос задан
  • 46 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 1
VoidVolker
@VoidVolker Куратор тега C#
Dark side eye. А у нас печеньки! А у вас?
Просто создаёте кроссплатформенный .Net 9 проект и добавляете профили публикации для разных ОС. Далее под виндой делаете сборку для винды, а под линуксом соответственно делаете сборку для линукса с использованием этих самых профилей. Если вам нужна графическая оболочка - то отличным выбором будет что-то типа Avalonia. Для платформенно-зависимого кода используйте стандартные директивы препроцессора. Если вы хотите для разных платформ использовать разные фреймворки/библиотеки, есть много кода для разных платформ или сложные зависимости, то в этом случае удобнее сделать три проекта: по отдельному проекту для каждой платформы и третий зависимый проект в виде библиотеки с общим для всех платформ кодом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы