托管 VS2017 代理版本 master.dacpac 不存在
Hosted VS2017 agent build master.dacpac does not exist
我使用 VS2017 Professional 创建的解决方案包含一个引用 master 数据库的 SQL 服务器数据库项目。使用托管 VS2017 代理在 Visual Studio Team Services 中构建我的解决方案时,出现以下错误:
2017-07-14T12:44:17.8387743Z ##[error]C:\Program Files (x86)\Microsoft
Visual
Studio17\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5):
Error SQL72027: File "C:\Program Files (x86)\Microsoft Visual
Studio17\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac"
does not exist. 2017-07-14T12:44:17.8397816Z C:\Program Files
(x86)\Microsoft Visual
Studio17\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5):
Build error SQL72027: File "C:\Program Files (x86)\Microsoft Visual
Studio17\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac"
does not exist.
[d:\a\s\Main\ItAsset.Database\ItAsset.Database.sqlproj]
我该如何解决这个问题并让我的解决方案在 VSTS 中构建?
它使用了 Hosted VS2017 代理中不存在的绝对路径。 (专业版 对比 企业版)。您可以检查项目文件(通过nodepad打开sqlproj文件)
您可以将 master.dacpac 复制到您的项目文件夹并将其包含到项目中,然后添加对此文件的引用。
这是 Visual Studio 2017 年 SSDT 中的一个错误。
解决方法是手动编辑项目文件,用 $(DacPacRootPath) 变量替换完整路径。或者,您可以在 Visual Studio 2015 年使用 SSDT。
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
我只是在多开发人员的情况下遇到了这个问题。它似乎发生在 VS2017 SSDT 项目中,其中签入代码的开发人员最初将 Visual Studio 安装在与您不同的路径中,或者 Visual Studio 的另一个实例。例如,如果开发人员 A 安装到默认 C:\ 但开发人员 B 安装他的 VS2017 到 E:\ 驱动器,谁创建对 Master 的引用将起作用,另一个将找不到 dacpac 文件。
查看 .sqlproj 文件,您可能会找到对 Master 数据库的引用:
<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">
尝试在 VS2019 中打开在 VS2017 中创建的 SSDT,需要更改
发件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
收件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas\master.dacpac">
注意:企业 Visual Studio
我们有不同版本 Visual Studio 的开发机器。我用一个条件来指定 HintPath
<Choose>
<When Condition="Exists('C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac')">
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</Otherwise>
</Choose>
我使用 VS2017 Professional 创建的解决方案包含一个引用 master 数据库的 SQL 服务器数据库项目。使用托管 VS2017 代理在 Visual Studio Team Services 中构建我的解决方案时,出现以下错误:
2017-07-14T12:44:17.8387743Z ##[error]C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): Error SQL72027: File "C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac" does not exist. 2017-07-14T12:44:17.8397816Z C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): Build error SQL72027: File "C:\Program Files (x86)\Microsoft Visual Studio17\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac" does not exist. [d:\a\s\Main\ItAsset.Database\ItAsset.Database.sqlproj]
我该如何解决这个问题并让我的解决方案在 VSTS 中构建?
它使用了 Hosted VS2017 代理中不存在的绝对路径。 (专业版 对比 企业版)。您可以检查项目文件(通过nodepad打开sqlproj文件)
您可以将 master.dacpac 复制到您的项目文件夹并将其包含到项目中,然后添加对此文件的引用。
这是 Visual Studio 2017 年 SSDT 中的一个错误。
解决方法是手动编辑项目文件,用 $(DacPacRootPath) 变量替换完整路径。或者,您可以在 Visual Studio 2015 年使用 SSDT。
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
我只是在多开发人员的情况下遇到了这个问题。它似乎发生在 VS2017 SSDT 项目中,其中签入代码的开发人员最初将 Visual Studio 安装在与您不同的路径中,或者 Visual Studio 的另一个实例。例如,如果开发人员 A 安装到默认 C:\ 但开发人员 B 安装他的 VS2017 到 E:\ 驱动器,谁创建对 Master 的引用将起作用,另一个将找不到 dacpac 文件。
查看 .sqlproj 文件,您可能会找到对 Master 数据库的引用:
<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">
尝试在 VS2019 中打开在 VS2017 中创建的 SSDT,需要更改
发件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
收件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas\master.dacpac">
注意:企业 Visual Studio
我们有不同版本 Visual Studio 的开发机器。我用一个条件来指定 HintPath
<Choose>
<When Condition="Exists('C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac')">
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac">
<HintPath>C:\Program Files (x86)\Microsoft Visual Studio19\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
</Otherwise>
</Choose>