Hosted VS2017 агент build master.dacpac не существует

Мое решение, созданное с помощью VS2017 Professional, содержит проект базы данных SQL Server, который ссылается на основную базу данных. При использовании агента Hosted VS2017 для создания моего решения в Visual Studio Team Services я получаю следующие ошибки:

2017-07-14T12: 44: 17.8387743Z ## [ошибка] C:\Program Files (x86)\Microsoft визуальный Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): Ошибка SQL72027: Файл "C:\Program Files (x86)\Microsoft Visual Студия \2017\Professional\Common7\IDE\Extensions\Microsoft\SQLdb в Lazarus\Extensions\SqlServer\110\SqlSchemas\master.dacpac" не существует. 2017-07-14T12: 44: 17.8397816Z C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): Ошибка сборки SQL72027: Файл "C:\Program Files (x86)\Microsoft Visual Студия \2017\Professional\Common7\IDE\Extensions\Microsoft\SQLdb в Lazarus\Extensions\SqlServer\110\SqlSchemas\master.dacpac" не существует. [D:\а\3\s\Главная\ItAsset.Database\ItAsset.Database.sqlproj]

Как я могу исправить это и получить решение для сборки в VSTS?

Ответ 1

Я просто понял это в ситуации с несколькими разработчиками. Это похоже на SSDT-проекты VS2017, где разработчик, который сначала проверял код, имел установку Visual Studio на другом пути, чем вы, или другой экземпляр Visual Studio. Например, если разработчик A установлен по умолчанию на C: \, но разработчик B установил свой VS2017 на диск E: \, тот, кто создает ссылку на Master, будет работать, другой не найдет файл dacpac.

В файле .sqlproj вы, скорее всего, найдете эту ссылку в базе данных Master:

 <ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
  <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath>

Примечание: <HintPath> верен, но Include=" является жестко закодированным путем. Кажется, что путь подсказки не соблюдается, как обычно. Чтобы устранить проблему, попробуйте скопировать содержимое элемента HintPath в атрибут Include. Оставьте HintPath как есть.

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">

Ответ 2

Это ошибка в SSDT для Visual Studio 2017.

Обходной путь - вручную отредактировать файл проекта, заменив полный путь переменной $ (DacPacRootPath). Или вы можете использовать SSDT для Visual Studio 2015.

https://feedback.azure.com/forums/908035-sql-server/suggestions/32897047-visual-studio-2017-ssdt-adds-hardcoded-master-dacp#comments

8/12/2019 Обновление - эта ошибка была исправлена в Visual Studio 2019 и Visual Studio 2017 версии 15.9.13. Глянь сюда - https://developercommunity.visualstudio.com/content/problem/124214/visual-studio-2017-ssdt-adds-hardcoded-mmsdb-andor.html

Ответ 3

Он использует абсолютный путь, который не существует в агенте Hosted VS2017. (Профессиональный vs Предприятие). Вы можете проверить файл проекта (открыть файл sqlproj через nodepad)

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

Ответ 4

Попытка открыть SSDT в VS2019, который был создан в VS2017, требует изменения

От:

<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">

Для того, чтобы:

<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SQLSchemas\master.dacpac">

ПРИМЕЧАНИЕ: Enterprise Visual Studio