Переходные ссылки проекта SDK в проектах ASP.NET - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь перенести различные проекты библиотеки C # в решение с использованием нового формата SDK (VS2017 +) .Решение также содержит несколько проектов ASP.NET, которые должны ссылаться на эти библиотеки.

Я знаю, что не могу обновить проекты ASP.NET для использования новой системы сборки на основе SDK на этом этапе.время, но я изменил их, чтобы использовать <PackageReference/> записи вместо packages.config файла для ссылок NuGet верхнего уровня.

В решении имеется ряд сценариев зависимости, которые похожи на следующие:

ASP.NET Project
  --> Top.Level.Package (NuGet)
  --> Project A (csproj)
    --> Some.Package (NuGet)
    --> Project C (csproj)
      --> Some.Other.Package (NuGet)
  --> Project B (csproj)
    --> Project C (csproj)
      --> Some.Other.Package (NuGet)

Т.е. проект ASP.NET ссылается на пакет NuGet верхнего уровня, проект A и проект B;Проект A ссылается на пакет NuGet и проект C;Проект B ссылается на проект C;и Project C ссылается на пакет NuGet.Все не -ASP.NET проекты были изменены, чтобы быть SDK-проектами, использующими записи <PackageReference/> для ссылок на пакеты NuGet, и все транзитивные зависимости между ними проходят без проблем.

Проблема, с которой я сталкиваюсьзаключается в том, что при сборке приложения ASP.NET MSBuild правильно копирует сборки для проектов A и Project B, а также сборки из ссылок на пакеты NuGet верхнего и транзитивного уровня в папку bin, но это не таккопирование выходных данных переходного проекта C, который требуется как для проекта A, так и для проекта B.

Есть ли прямой способ обойти это, кроме добавления ссылок на проекты верхнего уровня в проектах ASP.NET в "отсутствующие "проекты?

1 Ответ

1 голос
/ 03 мая 2019

Это связано с тем, что проект ASP.NET не поддерживает (и в настоящее время не может) поддерживать тип проекта в стиле SDK.

Проекты в стиле SDK активно запрашивают ссылки на проекты для дальнейших зависимостей. Поскольку проект ASP.NET этого не делает, вы должны добавить ссылку самостоятельно. (Или добавьте необходимую логику MSBuild, как показано в этом файле - найдите IncludeTransitiveProjectReferences, но я не могу порекомендовать такой подход, поскольку он может конфликтовать с обновлениями VS)

...