Как создать пакет nuget, поддерживающий несколько платформ

Прежде всего, я прочитал несколько статей на эту тему, таких как https://docs.microsoft.com/en-us/nuget/create-packages/supporting-multiple-target-frameworks, но они не охватывают мой сценарий, и все, что я пробовал, не сработало.

У меня есть всего 4 сборки со следующими конфигурациями:

1. .NET Framework 4.5; Platform x86
2. .NET Framework 4.5; Platform x64
3. UWP10; Platform x86
4. UWP10; Platrofm x64

У меня нет сборок платформы AnyCPU даже для .NET Framework. Все мои сборки ориентированы либо на x86, либо на x64. Все, что я нашел до сих пор, описывает, как создать мультиплатформенный пакет только для UWP. Я еще даже не пробовал, потому что эта тема хорошо освещена. Вопрос в том, как упаковать мультиплатформенный пакет для .NET Framework 4.5. В соответствии со статьями об упаковке кажется, что у меня должна быть следующая структура папок.

runtimes
   win-x86
      lib
         net45
            MyAssembly.dll
   win-x64
      lib
         net45
            MyAssembly.dll

Я создал эту структуру и попытался использовать пакет. Пакет устанавливается без ошибок, но я не могу использовать MyAssembly.dll. Похоже сборка его не находит. Я пробовал разные варианты имен папок, например «win10-x86», просто «x86». Ничего не работает.

Возможно ли вообще иметь мультиплатформенные пакеты для .NET Framework 4.5? Есть ли кто-нибудь, кто успешно создал его? Пожалуйста, поделитесь знаниями.

Спасибо


person Alex    schedule 20.07.2018    source источник
comment
Как насчет stackoverflow.com/questions/19478775/? Проверьте ответ с наибольшим количеством голосов.   -  person Lex Li    schedule 20.07.2018
comment
Я видел этот вопрос. Вопросу более 4 лет, и, если я не ошибаюсь, в NuGet вообще не было раздела времени выполнения, и в этой ситуации я понимаю, что решение было введено через настраиваемые цели. С тех пор NuGet значительно улучшился, и я предположил, что теперь можно создавать пакеты для конкретной платформы для .NET Framework. Я, вероятно, что-то упускаю, чтобы заставить его работать.   -  person Alex    schedule 24.07.2018
comment
Мне также интересно, как это возможно, особенно с проектами в стиле SDK.   -  person Ray    schedule 15.06.2020


Ответы (1)


Прошло некоторое время с тех пор, как вы задали вопрос; вам повезло или вы нашли обходной путь?

Если вы проверите документацию, вы ссылка, она (теперь) говорит

Эти сборки будут доступны только во время выполнения, поэтому, если вы хотите также предоставить соответствующую сборку времени компиляции, поместите AnyCPU сборку в папку /ref/{tfm}.

Таким образом, в дополнение к папке runtimes, похоже, вам нужна AnyCPU версия вашей библиотеки для поддержки сборки, и именно здесь у вас возникли проблемы.

person jswolf19    schedule 01.12.2020