создать многоцелевой пакет nuget

привет, я хочу создать многоцелевой пакет nuget. Кажется, все работает хорошо, за исключением того, что когда я создаю приложение wpf NetCore3 и устанавливаю свой пакет, используется .NET Framework dll, а библиотека NetCore3 не используется.

<files>
    <file src="lib\netcore\Control.dll" target="lib\netcore" />
    <file src="lib\net48\Control.dll" target="lib\net48" />
    <file src="lib\net40\Control.dll" target="lib\net40" />
    <file src="lib\net40\Microsoft.Windows.Shell.dll" target="lib\net40" />
  </files>

Это lib\netcore правильно?


person hadi khodabandeh    schedule 24.07.2019    source источник


Ответы (2)


netcore – это TFM из Магазина Microsoft.

Для вашего приложения .NET Core 3 (netcoreapp3.0) WPF вам потребуется многоцелевой netstandard или netcoreapp в вашем пакете NuGet.

Например:

<TargetFrameworks>netstandard2.0;net461</TargetFrameworks>

person Bruno Garcia    schedule 25.07.2019

Вы должны использовать тот же TFM в пакете, что и ваш csproj в элементе <TargetFramework>. Если у вашего csproj есть <TargetFramework>netcore</TargetFramework>, то обязательно используйте lib/netcore/whatever.dll. Но если у вашего csproj есть <TargetFramework>netcoreapp3.0</TargetFramework>, то вам следует использовать lib/netcoreapp3.0/whatever.dll.

Однако проекты в стиле SDK, единственные типы, которые работают с .NET Core 3.0, поддерживают множественное нацеливание (измените <TargetFramework> на <TargetFrameworks>, затем используйте список с разделителями точками с запятой netcoreapp3.0;net48;net40), а целевые объекты пакета NuGet знают, как упаковать эти проекты автоматически. Таким образом, нет необходимости создавать nuspec самостоятельно, что сводит к минимуму риск подобных ошибок.

Итак, так же, как документы NuGet по созданию multi-target packages говорит, что просто используйте dotnet pack для создания пакета, а NuGet определит, какие lib/* папки использовать. Избегайте использования файлов nuspec. Любые другие метаданные, которые вы укажете в nuspec, можно указать через MSBuild. свойства в вашем csproj.

person zivkan    schedule 25.07.2019