Переход с PCL на .netstandard

Я пытаюсь понять, как перенести проект с PCL на .netstandard 1.2.

У меня есть решение, в котором у меня есть проект PCL (portable45-net45+win8+wpa81) и проект .Net Standard (netstandard1.2), в котором все файлы связаны в проект PCL.

В настоящее время мы создаем пакет nuget из проекта PCL, используя файл nuspec. Теперь, что было бы лучшим подходом к тому, чтобы оба были доступны в 1 пакете nuget? Я нахожу использование nuget pack против dotnet pack и смешивание нескольких фреймворков и типов проектов (csproj) очень запутанным.

Также, по-видимому, существует новый формат csproj для проектов VS2017+, должен ли я конвертировать проект PCL?

В конечном итоге nuget должен содержать только проект .netstandard1.2, но мы хотим поднять оба дерева зависимостей во время миграции.


person grmbl    schedule 11.07.2018    source источник
comment
Вы должны использовать новый формат csproj в Vs2017 для сетевого или многоцелевого проекта.   -  person pinkfloydx33    schedule 11.07.2018
comment
что ты имеешь в виду, что what would be the best approach to have both available in 1 nuget package?? Вы имеете в виду, что хотите включить проект PCL и проект .Net Standard (netstandard1.2) в один пакет nuget?   -  person Leo Liu-MSFT    schedule 11.07.2018
comment
да, это то, чего я пытаюсь добиться, может быть, лучше создать один проект и работать с несколькими TargetFrameWork?   -  person grmbl    schedule 11.07.2018
comment
Требуется ли наличие в пакете ресурсов PCL и .NET Standard? Рассматривали ли вы преобразование вашей библиотеки PCL в .NET Standard 1.1 и наличие только этого ресурса в пакете? На основе этого можно преобразовать библиотеку профиля PCL 111 до .NET Standard 1.1.   -  person Alex Ghiondea - MSFT    schedule 12.07.2018


Ответы (1)


что было бы лучшим подходом к тому, чтобы оба были доступны в 1 пакете nuget?

Вы все еще можете использовать файл .nuspec для этого, просто нужно включить файлы dll из проекта PCL и проекта .Net Standard в разные рамки.

Ниже приведен мой тестовый файл .nuspec, вы можете проверить его для деталей:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>My.Package</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
    <copyright>Copyright 2018</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
    <files>
       <file src="TestPCL\bin\Debug\TestPCL.dll" target="lib\portable-net45+wp8\" />
       <file src="TestStandard\bin\Debug\netstandard1.2\TestStandard.dll" target="lib\netstandard1.2\" />
    </files>
</package>

Когда вы устанавливаете этот пакет в проект PCL и проект .Net Standard, nuget выберет файл DLL в соответствующей структуре для вашего проекта.

person Leo Liu-MSFT    schedule 12.07.2018
comment
Спасибо, я попробую это! - person grmbl; 12.07.2018
comment
Забудьте о напоминании, если ваша целевая структура .netstandard 1.2, вам нужно изменить <file src="TestStandard\bin\Debug\netstandard2.0\TestStandard.dll" target="lib\netstandard2.0\" /> на <file src="TestStandard\bin\Debug\netstandard1.2\TestStandard.dll" target="lib\netstandard1.2\" />, обновив ответ. - person Leo Liu-MSFT; 12.07.2018