【问题标题】:Build error in tfsbuild with database project使用数据库项目在 tfsbuild 中构建错误
【发布时间】:2021-09-28 00:46:38
【问题描述】:

我已经在 TFS Build 中设置了我的 .NET 项目。它在本地构建良好,但我在服务器上收到此构建错误:

未找到导入的项目“C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\SSDT\Microsoft.Data.Tools.Schema.SqlTask​​s.targets”。确认 声明中的路径正确,并且该文件存在于磁盘上。

我不知道它是什么,即使谷歌搜索也没有多大帮助。我的解决方案有一些数据库项目。这里有什么问题,我该如何解决?

【问题讨论】:

    标签: visual-studio-2012 tfsbuild database-project


    【解决方案1】:

    您需要在所有build agents上安装SQL Server Data Tools。在安装 TFS 构建服务器时,人们通常会在该机器或其他机器上创建代理。

    您可以从MS SQL Server Data Tools BlogMicrosoft SQL Server Data Tools 下载它们,然后选择与您正在执行的构建(Visual Studio 2010 或 Visual Studio 2012)相对应的一个。

    注意:在某些情况下,错误会提到路径:
    c:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.SqlTasks.targets
    在这种情况下,请从 SQL 安装中安装 SQL Server Data Tools,而不是上面的链接。

    【讨论】:

    【解决方案2】:

    我通过添加不构建 SQLPROJ 的新解决方案配置解决了类似的问题。然后,我配置了 CI-CD(Azure DevOps Pipelines)来构建该配置。 在构建的后续步骤中,我专门构建和打包 SQLPROJ。通过这个我避免了两个解决方案 - 其中一个只会在项目中使用; SQL 项目。

    【讨论】:

      【解决方案3】:

      我们使用ReadyRoll.MSBuild NuGet 包已经有一段时间了。 ReadyRoll 不再是 ReadyRoll 的事件,它仍在定期更新并与最新的 SCA 插件一起工作。它包含相同的构建扩展,并且可以在我们的构建代理上完美运行,无需安装任何东西。最大的问题是 .sqlproj 文件中没有 nuget 支持,这使得添加/更新包有点棘手:https://documentation.red-gate.com/rr1/installing/build-components

      SQL 变更自动化文档不包含此部分,因此很难确定它会保持多长时间。

      为了完整起见,从今天开始添加到您的 .sqlproj 的属性:

      <ReadyRollNuGetBaseFolder>$(MSBuildThisFileDirectory)..\packages</ReadyRollNuGetBaseFolder>
      <ReadyRollNuGetIsRestored Condition="$([System.IO.Directory]::GetDirectories($(ReadyRollNuGetBaseFolder), 'ReadyRoll.MSBuild.*').Length) != 0">True</ReadyRollNuGetIsRestored>
      <SqlChangeAutomationTargetsPath Condition="$(ReadyRollNuGetIsRestored) == 'True'">$([System.IO.Directory]::GetDirectories($(ReadyRollNuGetBaseFolder), 'ReadyRoll.MSBuild.*')[0])\tools\ReadyRoll.Data.Schema.SSDT.targets</SqlChangeAutomationTargetsPath>
      

      【讨论】:

        【解决方案4】:

        如果 Azure DevOps 管道构建代理出现此问题,请在管道 YML 任务中使用 MSBuild@1 而不是 DotNetCoreCLI@2。它对我有用。

        - task: MSBuild@1
          displayName: 'Build SQL solution'
          inputs:
            solution: <SQL DB Solution>.sln
            msbuildArchitecture: x64
            msbuildArguments: '/property:DSP="Microsoft.Data.Tools.Schema.Sql.SqlAzureV12DatabaseSchemaProvider"'
            configuration: 'release'
        

        【讨论】:

          猜你喜欢
          • 2019-03-07
          • 2011-12-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-22
          • 1970-01-01
          • 1970-01-01
          • 2018-07-06
          相关资源
          最近更新 更多