Создать пакет nuget из старого фреймворкового проекта, ссылающегося на netstandard project - PullRequest
0 голосов
/ 25 июня 2018

У меня есть решение, содержащее:

  • старый проект .Net Framework 4.6 в старом стиле (то есть он не использует более новый проект sdk, у него есть файл packages.config и файл nuspec)

  • нестандартный проект

Базовый проект ссылается на нестандартный проект через ссылку на проект.

Я пытаюсь найти способ упаковки проекта фреймворка, принимая во внимание зависимость от проекта netstandard (такой, что проект netstandard появляется как зависимость от проекта фреймворка, а не упаковывается в него).

Я пробовал:

  • nuget pack -IncludeReferencedProjects

    • это завершается неудачно с "Невозможно привести объект типа 'System.String' к типу 'NuGet.Frameworks.NuGet.Frameworks1070507.NuGetFramework'" из-за нестандартного проекта (известная проблема, например, https://github.com/NuGet/Home/issues/4808)
  • Импорт цели пакета nuget в рамках csproj (<Import Project="$(MSBuildSDKsPath)\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets" />), затем dotnet pack или msbuild /t:pack

    • это завершается ошибкой из-за отсутствующего файла project.assets.json (который, я думаю, не подходит для проектов, использующих packages.config?)
    • если я дополнительно укажу /p:NuspecFile=[path to nuspec], это даст мне дальнейшие результаты, и, похоже, все будет работать, , но зависимость от нестандартного проекта будет включена как часть пакета

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Исправлена ​​эта проблема путем обновления nuget.exe до 4.9.3 (было 4.5.1)

0 голосов
/ 25 июня 2018

Если я правильно понял, вы хотите создать многоцелевой пакет NuGet, перенеся код из старого проекта?

Ну, я обычно делал это, создавая новый проект, устанавливая многоцелевыеПеретащите все элементы и перетяните их и надейтесь, что у вас есть живучее количество неподдерживаемых сборок.

Я написал руководство для этого (на самом деле это сборник идей из Интернета) и сделал расширение VS смногоцелевой шаблон проекта.Поэтому, если я на вашем месте, я бы установил расширение, создал новый «Пустой многоцелевой проект» и скопировал все элементы из старого.

Как раз в вашем случае вы должны изменить цель .net45 на эквивалентную вашему предпочтению.В руководстве вы найдете несколько советов, касающихся неподдерживаемых сборок и т. Д.Шаблон проекта сам по себе выполняет 80% работы за вас.По крайней мере, в моем случае (перенос 9 библиотек), после того, как я применил методологию, это было просто.

...