Порядок сборки Visual Studio 2019 не работает - PullRequest
0 голосов
/ 27 мая 2020

Моя структура решения выглядит так:

  1. Установщик WiX : зависит от проектов A и B
  2. Project A : зависит в Project B
  3. Project B : нет зависимостей

Он настроен так же в зависимостях сборки. Отображаемый порядок сборки (щелкните правой кнопкой мыши решение -> порядок сборки проекта) является правильным (Project B -> Project A -> Installer). Но по какой-то причине, когда я пытаюсь перестроить все решение, это не тот порядок, в котором Visual Studio на самом деле пытается построить проекты. Он всегда начинается с проекта A, который, конечно, затем терпит неудачу из-за отсутствия зависимости от проекта B.

Если я вручную создаю проекты в правильном порядке, все работает.

В моем файле .sln проекты перечислены следующим образом:

Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectA", ProjectA\ProjectA.csproj", "{B80B7A8F-0576-41FA-BD3D-B3C6F5F8D6E7}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProjectB", "ProjectB\ProjectB.csproj", "{D127D2C1-0F13-41F1-B4A1-218BC53ABC40}"
EndProject
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "Installer\Installer.wixproj", "{1D504782-E92A-4C60-9ADC-6067E7E301AA}"
    ProjectSection(ProjectDependencies) = postProject
        {B80B7A8F-0576-41FA-BD3D-B3C6F5F8D6E7} = {B80B7A8F-0576-41FA-BD3D-B3C6F5F8D6E7}
        {D127D2C1-0F13-41F1-B4A1-218BC53ABC40} = {D127D2C1-0F13-41F1-B4A1-218BC53ABC40}
    EndProjectSection
EndProject

Есть идеи, что может вызвать эту проблему?

1 Ответ

1 голос
/ 28 мая 2020

Обычно , порядок сборки сохраняется в файле решения (.sln файл) следующим образом:

enter image description here

Поэтому, когда вы используете это, вы должны построить все решение с этим файлом. Но

Однако в vs IDE, когда вы создаете один проект, он может следовать указанному порядку сборки, но в командной строке msbuild msbuild projectA.xxproj не создает сначала B, а затем построить A в соответствии с указанными зависимостями. Это также уникально для vs ides, хотя зависимости сборки хранятся в xxx.sln, а не в отдельных xxx.proj файлах.

Если все решение (msbuild xxx.sln) не построено в командной строке MSBuild, оно будет построено последовательно.

Это ситуация, которая обычно вызывает эту разницу.

Но по какой-то причине, когда я пытаюсь перестроить все решение, это не тот порядок, в котором Visual Studio на самом деле пытается собрать проекты.

Интересно, что вы сделали вызвало это, и если вы создадите все решение (файл xxx.sln), этой проблемы не будет. Поэтому я хочу знать, какой формат сборки или что вы сделали с вашим решением.

Поскольку MSBuild не может построить wixproj файл, вам следует использовать VS IDE или devenv xxx. sln / build для создания всего решения.

Предложение

В качестве предложения вы можете использовать Project Reference вместо указания сборки order, который установит порядок в каждом xxx.proj, а не в xxx.sln файле. Это будет более надежным и безопасным.

1) Удалите заказы на сборку в Project Dependencies (щелкните правой кнопкой мыши на решении)

2) Щелкните правой кнопкой мыши проект WIX -> References -> Add Reference -> Projects -> Выберите Project A и Project B.

3) Щелкните правой кнопкой мыши Project A -> References -> Add Reference -> Project -> Project B.

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

Обновление 1

Просто подсказка от Эри c, и спасибо ему за то, что поделился решением и результатом теста.

Решение

Сначала , удалите все зависимости проекта, а затем снова добавьте их, после чего проблема устранена. Это могло быть проблемой для этого проекта, поскольку он был перенесен из старого VS2010 .

...