Размещенный мастер сборки агента VS2017.dacpac-файл не существует

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

2017-07-14T12: 44: 17.8387743 Z ##[ошибка]C:Program файлы (x86)Microsoft Визуальный Студия2017предприятияв MSBuildМайкрософтVisualStudioпрограммы V15.0средыМайкрософт.Данные.Инструменты.Схема.SqlTasks.целевые показатели(559,5): Ошибка SQL72027: Файл "C:Program файлы (x86)Microsoft Visual Studio2017ProfessionalCommon7IDEExtensionsMicrosoftSQLDBExtensionsSqlServer110SqlSchemasmaster.файл dacpac" не существует. 2017-07-14T12:44:17.8397816 Z C:Program файлы (x86)Microsoft Visual Студия2017предприятияв MSBuildМайкрософтVisualStudioпрограммы V15.0средыМайкрософт.Данные.Инструменты.Схема.SqlTasks.целевые показатели(559,5): Ошибка сборки SQL72027: файл "C:Program файлы (x86)Microsoft Visual Studio2017ProfessionalCommon7IDEExtensionsMicrosoftSQLDBExtensionsSqlServer110SqlSchemasmaster.файл dacpac" не существует. [d:a3sMainItAsset.База ДанныхItAsset.База данных.sqlproj]

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

3 ответов


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

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


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

просмотр в.файл sqlproj, вы, вероятно, найдете эту ссылку на Главную базу данных:

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

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

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

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

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

ошибка была сообщена дважды на сайте Microsoft Connect: https://connect.microsoft.com/SQLServer/Feedback/Details/3141348

и, здесь: https://connect.microsoft.com/SQLServer/Feedback/Details/3133716

обратите внимание, что сайт Connect был выведен из эксплуатации. Пожалуйста, проголосуйте за этот вопрос на устройства здесь:

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