Сбой сборки расширения Visual Studio с ошибкой VSSDK1077: невозможно найти каталог расширений. «Значение не может быть нулевым - PullRequest
0 голосов
/ 06 января 2019

Я настроил конвейер сборки TFS (2017) для компиляции расширения VS с режимом отладки для особых требований, которым требуются файлы .pdb. Задача решения по сборке завершается неудачно для конфигурации «отладка» с ошибкой ниже, однако тот же конвейер работает для конфигурации выпуска. Я также попробовал подход, упомянутый в следующем обсуждении, однако, это не решает мою проблему.

https://social.msdn.microsoft.com/Forums/vstudio/en-US/fd220999-5761-475a-bf86-98dff6b35218/unable-to-compile-vsix-project-that-is-a-part-of-my-solution-using-amd64-msbuild-from-vs2015?forum=msbuild

Благодарим вас за помощь в решении этой проблемы.

Ниже приведена конфигурация сборки, используемая для задачи Build Solution: enter image description here

Следующие переменные сборки используются для настройки параметров сборки. enter image description here

Сообщение об ошибке сборки:

пакеты \ Microsoft.VSSDK.BuildTools.15.1.192 \ инструменты \ VSSDK \ Microsoft.VsSDK.targets (633, 5) пакеты \ Microsoft.VSSDK.BuildTools.15.1.192 \ инструменты \ VSSDK \ Microsoft.VsSDK.targets (633,5): Ошибка VSSDK1077: невозможно найти каталог расширений. "Значение не может быть нулевым. Имя параметра: путь1 ". Процесс 'msbuild.exe' завершен с кодом «1».

1 Ответ

0 голосов
/ 07 января 2019
  1. Обновите пакет NuGet для Microsoft.VSSDK.BuildTools до последней версии 15.9.3032, на случай, если проблема уже решена.
  2. Конфигурации выпуска также могут генерировать файлы PDB (свойства проекта, вкладка «Построение», кнопка «Дополнительно ...», «Вывод»> «Отладочная информация»). Таким образом, если конфигурация Release работает для вас, вы можете продолжать использовать ее, одновременно генерируя файл pdb с полной отладочной информацией.
  3. Ошибка возникает, когда после правильной компиляции сгенерированный выходной файл VSIX будет развернут в папку для расширений экспериментального экземпляра VS, что является необходимым шагом для отладки файла VSIX. Возможное объяснение различного поведения для конфигураций Debug / Release заключается в том, что, возможно, ваш .csproj указывает False для конфигурации Release. По умолчанию, если не установлено, это свойство имеет значение true в файле Microsoft.VsSDK.targets:

    <Условие DeployExtension = "'$ (DeployExtension)' == ''"> true

Поскольку, скорее всего, вам не нужно развертывать VSIX на экспериментальном экземпляре VS при сборке на сервере сборки (поскольку вы не собираетесь его отлаживать), вы можете установить это свойство в False, чтобы пропустить развертывание. Это можно сделать с помощью третьей конфигурации сборки (например, «DebugBuildServer»), для которой вы указываете DeployExtension в False в файле .csproj или придерживаетесь двух конфигураций сборки, но передавая / p: DeployExtension = false в аргументах MSBuild Задача сборки Visual Studio вашего конвейера сборки.

...