Проблема со ссылками на транзитивные зависимости при создании специфицированного c. NET Базового проекта в TeamCity. - PullRequest
1 голос
/ 21 января 2020

У меня есть решение с несколькими проектами, известные проекты:

  • ContractProject
  • DataProject
  • WebProject

WebProject - это базовый проект. NET, два других: NET Framework.

Это файловая структура, включая файлы csproj и sln:

enter image description here

DataProject ссылается Dapper, который является пакетом NuGet.

При попытке запустить конфигурацию сборки в TeamCity , Я получаю следующую (слегка уменьшенную, отредактированную) ошибку:

DapperWorklistRepository.cs(4,7): error CS0246: The type or namespace name 'Dapper' could not be found (are you missing a using directive or an assembly reference?) [REDACTED_PATH_TO_DATAPROJECT_CSPROJ_FILE]
......
Build FAILED.
......
Process exited with code 1
Step Build (.NET Core (dotnet)) failed

Это мой единственный шаг сборки (. NET Core):

enter image description here

Есть идеи, что я делаю не так? У меня такое чувство, что это может быть связано с тем, что веб-проект не может ссылаться на проекты на один уровень назад? Я пытался установить необходимые пути разными способами, но безрезультатно.

1 Ответ

0 голосов
/ 22 января 2020

В итоге я понял это, реализовав немного хакерского решения.

Проблема заключается в том, что я ссылаюсь. NET Каркасные проекты из. NET Core проект, и пытаясь собрать их все за один шаг.

Для обхода потребовалось две вещи:

Во-первых, мне пришлось включить шаг сборки установщика NuGet. Я не мог понять, как конкретно нацелиться. NET Framework-проекты (он не поддерживает. NET Core), поэтому я по сути продублировал файл решения, переименовал его в NetCoreBuildHelper и удалил ссылку на веб-проект. , Ссылка осталась в исходном решении. Затем я ссылался на решение new NetCoreBuildHelper в установщике NuGet.

Во-вторых, мне пришлось создать шаг. NET Framework MSBuild, который строил другие проекты (DataProject и ContractProject ), ссылаясь на решение NetCoreBuildHelper.

Мне бы хотелось услышать ответы на этот вопрос, если бы я мог улучшить решение, так как это похоже на хак

...