Можно ли создать пакет Nuget, который имеет только Net8.0 в качестве TargetFramework , но поддерживает специфические вызовы API Windows, которые доступны только при настройке TargetFramework для net8.0-windows10.19041.0 ? /> ogle
Я хочу создать небольшую кроссплатформенную (Linux и Windows) Bluetooth Le Library, которую я могу включить в качестве пакета Nuget в другие проекты Net8.0 . Проекты, включающие Nuget, должны быть в состоянии работать как на Windows, либо на Linux, но они не должны заботиться о своей ОС. Однако, чтобы заставить Windows Bluetooth работать, мне нужен доступ к Windows.Devices.Bluetooth , который, насколько мне известно, доступен только путем установки TargetFrameWork на net8.0-windows10.0.19041.0 вместо Net8.0 . теперь имеет другой TargetFrameWork . Мне понадобится включение проекта, чтобы также установить свой TargetFrameWork на net8.0-windows10.0.19041.0 , но я не хочу, и я также не могу по другим причинам. (
Код: Выделить всё
net8.0
Multi TargetFramework также не решает мою проблему, так как проект, который включает в себя библиотеку Bluetooth, всегда узнает о том, что она работает, а затем выберет. net8.0-windows10.0.19041.0 .
Другие кроссплатформенные библиотеки Bluetooth LE, такие как 32Feet, имеют одинаковую проблему, и просто выполните несколько целевых кадров . Но еще раз, включающий проект должен знать, что его ОС, а затем либо выбрать Net8.0 или net8.0-windows10.0.19041.0 .
Должно быть решение моей проблемы, которое я не вижу. Иначе вся идея кроссплатформенного кода .NET не будет работать, когда мы введем специфическую территорию ОС. Я просто хочу единый пакет Nuget, который обрабатывает различные реализации, специфичные для ОС, в то же время нацеливаясь на net8.0 .
Идеи, которые я думал о
Я знаю, что есть ОС-ГВАРЫ ИЛИ ПРЕДПРОЦЕРСОВЫЕ РЕКРЕСТИ Функции. < /p>
Несколько TargetFramework < /code> не выглядит как решение моей проблемы, поскольку он выглядит более адаптированным к проектам, которые хотят поддерживать несколько разных версий .NET, а не несколько разных платформ. Существует microsoft.windows.sdk.contracts , но это только для версий .NET, чем .net 6.
Chatgpt сказал мне, чтобы мне понравилось разделить реализацию на Linux и Windows, а затем немного инъекции DI во время выполнения для загрузки соответствующего DLL, но я даже не уверен, что на самом деле будет работать.>
Подробнее здесь: https://stackoverflow.com/questions/796 ... -targetfra