Я пытаюсь создать мультиплатформенный пакет для Python.NET, ориентированный на .NET Standard 2.0, используя этот проект .
Мне удалось создать пакет NuGet со следующей структурой:
ref
|- netstandard2.0
|- Python.Runtime.dll
runtimes
|- win
|- lib
|- netstandard2.0
|- Python.Runtime.dll
|- linux-x64
|- ...
Этот пакет отлично работает с тестовым приложением, основанным на новом формате .csproj + PackageReferece
, но только если я нацеливаюсь на netcoreappX.X
.В этом случае он копирует всю папку runtimes
в выходной файл на dotnet publish
и работает без проблем.
Если я изменяю TargetFramework
на net472
, оба dotnet build
и dotnet publish
вкл.Windows не удается скопировать любую версию Python.Runtime.dll из пакета, что вызывает FileNotFoundException: Could not load file or assembly 'Python.Runtime, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
При попытке запуска из Visual Studio возникает то же исключение.
Исключение действительно имеет смысл, как я вижу, сборка не копируется в выходной каталог.
Теперь вопрос в том, какая из следующих проблем и как ее исправить:
- myВ пакете .nuget чего-то не хватает, поэтому ничего не выбрано для цели
net472
(хотя я ожидаю, что это просто с использованием netstandard2.0
stuff) - в моем тестовом приложении .csproj что-то отсутствует (возможно, мне нужно указатьв .csproj все поддерживаемые среды выполнения?)
- установка, подобная этой, вообще не поддерживается инструментами
Если есть решение вышеуказанной проблемы, будет ли оно работатьдля старых проектов .NET Framework wит packages.config
?