托管VS2017代理构建master.dacpac不存在

时间:2017-07-14 13:04:20

标签: visual-studio-2017 sql-server-data-tools azure-pipelines

我使用VS2017 Professional创建的解决方案包含一个引用master数据库的SQL Server数据库项目。使用Hosted VS2017代理在Visual Studio Team Services中构建我的解决方案时,我收到以下错误:

  

2017-07-14T12:44:17.8387743Z ## [错误] C:\ Program Files(x86)\ Microsoft   视觉   工作室\ 2017年\企业\的MSBuild \微软\ VisualStudio的\ V15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets(559,5):   错误SQL72027:文件" C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017年\专业\ Common7 \ IDE \扩展\微软\ SQLDB \扩展\ SqlServer的\ 110 \ SqlSchemas \ master.dacpac"   不存在。 2017-07-14T12:44:17.8397816Z C:\ Program Files   (x86)\ Microsoft Visual   工作室\ 2017年\企业\的MSBuild \微软\ VisualStudio的\ V15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets(559,5):   生成错误SQL72027:文件" C:\ Program Files(x86)\ Microsoft Visual   工作室\ 2017年\专业\ Common7 \ IDE \扩展\微软\ SQLDB \扩展\ SqlServer的\ 110 \ SqlSchemas \ master.dacpac"   不存在。   [d:\一个\ 3 \ S \主\ ItAsset.Database \ ItAsset.Database.sqlproj]

如何解决此问题并获得我在VSTS中构建的解决方案?

4 个答案:

答案 0 :(得分:36)

我在多开发人员的情况下得到了一点点。这似乎发生在VS2017 SSDT项目中,签入代码的开发人员最初将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">

答案 1 :(得分:15)

这是针对Visual Studio 2017的SSDT中的一个错误。

解决方法是手动编辑项目文件,用$(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投票:

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

答案 2 :(得分:4)

它使用Hosted VS2017代理中不存在的绝对路径。 (专业 vs 企业)。您可以检查项目文件(通过nodepad打开sqlproj文件)

您可以将master.dacpac复制到项目文件夹并将其包含到项目中,然后添加对该文件的引用。

答案 3 :(得分:0)

尝试在VS2017中创建的VS2019中打开SSDT,需要进行更改

发件人:

<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