【问题标题】:Hosted VS2017 agent build master.dacpac does not exist托管的 VS2017 代理构建 master.dacpac 不存在
【发布时间】:2017-12-19 14:27:40
【问题描述】:

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

2017-07-14T12:44:17.8387743Z ##[错误]C:\Program Files (x86)\Microsoft 视觉的 Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTask​​s.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 文件 (x86)\微软视觉 Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\SSDT\Microsoft.Data.Tools.Schema.SqlTask​​s.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:\a\3\s\Main\ItAsset.Database\ItAsset.Database.sqlproj]

如何解决这个问题并让我的解决方案在 VSTS 中构建?

【问题讨论】:

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


【解决方案1】:

我只是在多开发人员的情况下对此有所了解。这似乎发生在 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>

注意:&lt;HintPath&gt; 是正确的,但 Include=" 是硬编码路径。似乎没有像通常那样遵循提示路径。要解决您的问题,请尝试将 HintPath 元素的内容复制到 Include 属性。保持 HintPath 不变。

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

【讨论】:

【解决方案2】:

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

解决方法是手动编辑项目文件,用 $(DacPacRootPath) 变量替换完整路径。或者,您可以将 SSDT 用于 Visual Studio 2015。

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

2019 年 8 月 12 日更新 - 此错误已在 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

【讨论】:

  • 我同意这已损坏并需要修复,而不是复制文件。
  • 感谢@LarrySmith 提供更多详细信息
  • 任何时候我的朋友。这是一个真正的谜,几乎在我们升级到 2017 年之后,我的团队就感到非常沮丧。提出指控并追捕受害者。 ;) 从字面上看,您的帖子让我们走上了正确的道路。
【解决方案3】:

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

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

【讨论】:

  • 改用@LarrySmith 的答案。您不必在项目中包含 dacpacs。
  • 你能删除这个答案吗?这不是您应该解决由错误引起的问题的方式。拉里史密斯的答案是修复错误之前的最佳答案。
  • @JasonKohlhoff 对不起,它抛出“你不能删除这个接受的答案”。
【解决方案4】:

我们有不同版本的 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>

【讨论】:

    【解决方案5】:

    试图在 VS2019 中打开一个在 VS2017 中创建的 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">
    

    注意:企业 Visual Studio

    【讨论】:

    • 请看上面拉里史密斯的回答。
    猜你喜欢
    • 1970-01-01
    • 2017-10-28
    • 1970-01-01
    • 2016-10-24
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2016-04-07
    相关资源
    最近更新 更多