Размещенный агент VS2017, сборка master.dacpac не существует
Мое решение, созданное с помощью VS2017 Professional, содержит проект базы данных SQL Server, который ссылается на основную базу данных. При использовании агента Hosted VS2017 для построения моего решения в Visual Studio Team Services я получаю следующие ошибки:
2017-07-14T12: 44: 17.8387743Z ## [ошибка]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 Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\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 Studio \ 2017 \ Professional \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Extensions \ SqlServer \ 110 \ SqlSchemas \ master.dacpac" не существует. [D: \ а \3\s\ Главная \ItAsset.Database\ItAsset.Database.sqlproj]
Как я могу это исправить и получить мое решение для сборки в VSTS?
5 ответов
Он использует абсолютный путь, который не существует в агенте Hosted VS2017. (Профессионал против Предприятия). Вы можете проверить файл проекта (открыть файл sqlproj через нодпад)
Вы можете скопировать master.dacpac в папку вашего проекта и включить его в проект, а затем добавить ссылку на этот файл.
Я только что понял это в ситуации с несколькими разработчиками. Похоже, что это происходит в проектах 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">
Это ошибка в 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 был списан. Пожалуйста, проголосуйте за этот вопрос на UserVoice здесь:
У нас были машины для разработки с разными версиями Visual Studio. Я использовал условие для указания HintPath
<Choose>
<When Condition="Exists('C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac')">
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</Otherwise>
</Choose>
Попытка открыть 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