Стиль проекта MsBuild SDK: зависимости проекта иногда терпят неудачу - PullRequest
0 голосов
/ 24 сентября 2018

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

  • Proj A, ответственный за выполнение некоторой подпрограммы, такой как задача MsBuild
  • Проект Proj B, который требует такой обработки дляправильная компиляция
  • Задача настроена в Proj B как цель MsBuild с атрибутом BeforeTargets = "CoreCompile".

Исходя из того, что Proj A должен быть полностью скомпилирован перед запуском задачи при компиляции Proj B,Оба проекта имеют разные цели компиляции (NetStandard20 и Net462).Поэтому я не могу сделать прямую ссылку, но сделать зависимость проекта для всего решения, задав для свойства AddSyntheticProjectReferencesForSolutionDependencies значение false (в противном случае msbuild попытается сделать зависимость проекта принудительной).

В этой настройке MsBuild иногда завершается ошибкой при компиляции: ProjA начал компилироваться, но не закончил вовремя, когда Proj B запустил задачу.MSBuild запускается на компьютере CI с ключом /m.

Любые идеи приветствуются.

1 Ответ

0 голосов
/ 24 сентября 2018

В этом случае вам на самом деле нужна синтетическая ссылка на проект, но в настоящий момент в MSBuild есть небольшая проблема, которая создает некоторые проблемы в ссылках на проект, если проект с зависимостью является многоцелевым.Это исправлено в 15,9 .

Пожалуйста, попробуйте его в визуальной предварительной версии студии 15,9 (на момент написания: 15,9 Предварительный просмотр 2).

Если выне хотите ждать, вы можете добавить аналогичную ссылку проекта в файл csproj самостоятельно:

<ItemGroup>
  <ProjectReference Include="..\other\project.csproj"
    ReferenceOutputAssembly="false"
    LinkLibraryDependencies="false"
    CopyLocal="false"
    SkipGetTargetFrameworkProperties="true"
    GlobalPropertiesToRemove="TargetFramework"
    />
</ItemGroup>
...