【问题标题】:Continuous Integration with .Net Core App and Database Project (VS2017)与 .Net Core 应用程序和数据库项目的持续集成 (VS2017)
【发布时间】:2018-01-15 03:58:57
【问题描述】:

我在 VS2017 中有一个 .net Core 应用程序,该应用程序在解决方案中也有一个数据库项目。

我想在 Visual Studio Team Services 中设置持续集成,以构建和发布应用程序和数据库项目。我已经能够在 Publish Artifacts 中获取数据库项目或应用程序,但无法同时获取它们。我假设我的路径设置错误,但是我尝试过的任何组合都没有运气,而且我几乎找不到关于同时构建 .net 核心应用程序和数据库项目的文档并一起部署。如何在 VSTS 中同时构建和发布 .net 核心应用和数据库项目?

以下是我在 VSTS 中为 Build 设置的当前设置。我目前正试图将数据库项目放在一个文件夹中($(build.artifactstagingdirectory)),并将应用程序放在另一个文件夹中,因为导致

List of current steps

下面是当前设置的输出,如上图所示


开始:构建

**************************************************** *************************************

任务:.NET Core 描述:使用 dotnet core 命令行构建、测试和发布。 版本:1.0.2

作者:微软公司

"C:\Program Files\dotnet\dotnet.exe" build d:\a\1\s\DatabaseDeploymentTest.web\DatabaseDeploymentTest.web.csproj --配置发布 Microsoft (R) Build Engine 版本 15.1.1012.6693 版权所有 (C) 微软公司。版权所有。 DatabaseDeploymentTest.web -> d:\a\1\s\DatabaseDeploymentTest.web\bin\release\netcoreapp1.1\DatabaseDeploymentTest.web.dll 构建成功。 0 个警告 0 错误 经过时间 00:00:07.50


完成:构建



开始:构建解决方案 **/*.sln

**************************************************** *************************************

任务:MSBuild 描述:使用 MSBuild 构建 版本:1.120.0

作者:微软公司

"D:\a_tasks\MSBuild_c6c4c611-aa2e-4a33-b606-5eaba2196824\1.120.0\ps_modules\MSBuildHelpers\vswhere.exe" -version [15.0,16.0) -latest -format json "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" "d:\a\1\s\DatabaseDeploymentTest.sln" /nologo /nr:false /dl :CentralLogger,"D:\a_tasks\MSBuild_c6c4c611-aa2e-4a33-b606-5eaba2196824\1.120.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll";"RootDetailId=|SolutionDir=d:\a \1\s"*ForwardingLogger,"D:\a_tasks\MSBuild_c6c4c611-aa2e-4a33-b606-5eaba2196824\1.120.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /t:build /p :CmdLineInMemoryStorage=True /p:_MSDeployUserAgent="VSTS_8786b412-4ab0-4ae3-aa96-af0394363b64_build_32_835" 一次在此解决方案中构建项目。要启用并行构建,请添加“/m”开关。 构建于 2017 年 8 月 7 日下午 6:40:49 开始。 节点 1 上的项目“d:\a\1\s\DatabaseDeploymentTest.sln”(构建目标)。 验证解决方案配置: 构建解决方案配置“调试|任何 CPU”。 项目“d:\a\1\s\DatabaseDeploymentTest.sln”(1)正在节点 1(默认目标)上构建“d:\a\1\s\DatabaseDeploymentTest\DatabaseDeploymentTest.sqlproj”(2)。 PrepareForBuild: 创建目录“bin\Debug\”。 创建目录“obj\Debug\”。 核心编译: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /nowarn:1701,1702 /nostdlib+ /errorreport:prompt /warn:4 /define:DEBUG ;TRACE /highentropyva+ /reference:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\mscorlib.dll" /debug+ /debug:full /optimize- /out:obj\Debug\ DatabaseDeploymentTest.dll /ruleset:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Team Tools\Static Analysis Tools\Rule Sets\MinimumRecommendedRules.ruleset" /subsystemversion:6.00 /target:library /warnaserror- / utf8 输出“d:\a_temp.NETFramework,Version=v4.5.2.SqlClrAttributes.cs” 使用目录中的编译器进行共享编译:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn SqlBuild: 创建一个模型来表示项目... 正在加载项目参考... 正在加载项目文件... 构建项目模型并解决对象相互依赖关系... 验证项目模型... 将模型写入 d:\a\1\s\DatabaseDeploymentTest\obj\Debug\Model.xml... DatabaseDeploymentTest\dbo\Stored Procedures\LoadEmployees.sql(1,1):警告 SQL71558:对象引用 [dbo].[Employees].[HKSEmployeeId] 仅在大小写上与对象定义 [dbo].[Employees].[ HKS员工ID]。 d:\a\1\s\DatabaseDeploymentTest\dbo\Stored Procedures\LoadEmployees.sql(1,1,1,1):生成警告 SQL71558:对象引用 [dbo].[Employees].[HKSEmployeeId] 仅相差对象定义 [dbo].[Employees].[HKSEmployeeID] 中的大小写。 [d:\a\1\s\DatabaseDeploymentTest\DatabaseDeploymentTest.sqlproj] 复制文件到输出目录: 将文件从“obj\Debug\DatabaseDeploymentTest.dll”复制到“bin\Debug\DatabaseDeploymentTest.dll”。 DatabaseDeploymentTest -> d:\a\1\s\DatabaseDeploymentTest\bin\Debug\DatabaseDeploymentTest.dll 将文件从“obj\Debug\DatabaseDeploymentTest.pdb”复制到“bin\Debug\DatabaseDeploymentTest.pdb”。 SqlPrepareForRun: DatabaseDeploymentTest -> d:\a\1\s\DatabaseDeploymentTest\bin\Debug\DatabaseDeploymentTest.dacpac 完成构建项目“d:\a\1\s\DatabaseDeploymentTest\DatabaseDeploymentTest.sqlproj”(默认目标)。 项目“d:\a\1\s\DatabaseDeploymentTest.sln”(1)正在节点 1(默认目标)上构建“d:\a\1\s\DatabaseDeploymentTest.web\DatabaseDeploymentTest.web.csproj”(3) . PrepareForBuild: 创建目录“bin\Debug\netcoreapp1.1\”。 创建目录“obj\Debug\netcoreapp1.1\”。 PreComputeCompileTypeScript: C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.2\tsc.exe --noEmitOnError --listEmittedFiles 编译类型脚本: C:\Program Files (x86)\Microsoft SDKs\TypeScript\2.2\tsc.exe --noEmitOnError --listEmittedFiles GenerateTargetFrameworkMonikerAttribute: 跳过目标“GenerateTargetFrameworkMonikerAttribute”,因为所有输出文件相对于输入文件都是最新的。 核心编译: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn\csc.exe /noconfig /unsafe- /checked- /nowarn:1701,1702,1705 /nostdlib+ /errorreport:prompt /warn:4 /define:TRACE;DEBUG;NETCOREAPP1_1 /reference:C:\Users\buildguest.nuget\packages\microsoft.applicationinsights.aspnetcore\2.0.0\lib\netstandard1.6\Microsoft.ApplicationInsights.AspNetCore.dll /参考:C:\Users\buildguest.nuget\packages\microsoft.applicationinsights\2.2.0\lib\netstandard1.5\Microsoft.ApplicationInsights.dll /reference:C:\Users\buildguest.nuget\packages\microsoft.aspnetcore。 antiforgery\1.1.1\lib\netstandard1.3\Microsoft.AspNetCore.Antiforgery.dll /reference:C:\Users\buildguest.nuget\packages\microsoft.aspnetcore.authorization\1.1.1\lib\netstandard1.3\Microsoft .AspNetCore.Authorization.dll /reference:C:\Users\buildguest.nuget\packages\microsoft.aspnetcore.cors\1.1.1\lib\netstandard1.3\Microsoft.AspNetCore.Cors.dll /reference:C:\Users \buildguest.nuget\packages\microsoft.aspnetcore.cryptogr aphy.internal\1.... 使用目录中的编译器进行共享编译:C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Roslyn GetTypeScriptCopyToOutputDirectoryItems: 将 BuildAction=TypeScriptCompile 的项目添加到 GetCopyToOutputDirectoryItems 目标将填充(使用其他 BuildAction 的项目)的相同集合中 复制文件到输出目录: 将文件从“obj\Debug\netcoreapp1.1\DatabaseDeploymentTest.web.dll”复制到“bin\Debug\netcoreapp1.1\DatabaseDeploymentTest.web.dll”。 DatabaseDeploymentTest.web -> d:\a\1\s\DatabaseDeploymentTest.web\bin\Debug\netcoreapp1.1\DatabaseDeploymentTest.web.dll 将文件从“obj\Debug\netcoreapp1.1\DatabaseDeploymentTest.web.pdb”复制到“bin\Debug\netcoreapp1.1\DatabaseDeploymentTest.web.pdb”。 完成构建项目“d:\a\1\s\DatabaseDeploymentTest.web\DatabaseDeploymentTest.web.csproj”(默认目标)。 完成构建项目“d:\a\1\s\DatabaseDeploymentTest.sln”(构建目标)。 构建成功。 “d:\a\1\s\DatabaseDeploymentTest.sln”(构建目标)(1) -> “d:\a\1\s\DatabaseDeploymentTest\DatabaseDeploymentTest.sqlproj”(默认目标)(2)-> (SqlBuild 目标)-> d:\a\1\s\DatabaseDeploymentTest\dbo\Stored Procedures\LoadEmployees.sql(1,1,1,1):生成警告 SQL71558:对象引用 [dbo].[Employees].[HKSEmployeeId] 仅相差对象定义 [dbo].[Employees].[HKSEmployeeID] 中的大小写。 [d:\a\1\s\DatabaseDeploymentTest\DatabaseDeploymentTest.sqlproj] 1 个警告 0 错误 经过时间 00:00:12.94


完成:构建解决方案 **/*.sln



开始:将文件复制到:$(build.artifactstagingdirectory)

**************************************************** *************************************

任务:复制文件 描述:使用匹配模式将文件从源文件夹复制到目标文件夹(匹配模式将只匹配文件路径,而不是文件夹路径) 版本:2.117.0

作者:微软公司

找到 0 个文件


完成:将文件复制到:$(build.artifactstagingdirectory)



开始:发布

**************************************************** *************************************

任务:.NET Core 描述:使用 dotnet core 命令行构建、测试和发布。 版本:1.0.2

作者:微软公司

"C:\Program Files\dotnet\dotnet.exe" 发布 d:\a\1\s\DatabaseDeploymentTest.web\DatabaseDeploymentTest.web.csproj --configuration release --output d:\a\1\a \DatabaseDeploymentTest.web Microsoft (R) Build Engine 版本 15.1.1012.6693 版权所有 (C) 微软公司。版权所有。 DatabaseDeploymentTest.web -> d:\a\1\s\DatabaseDeploymentTest.web\bin\release\netcoreapp1.1\DatabaseDeploymentTest.web.dll


完成:发布



开始:发布工件

**************************************************** *************************************

任务:发布构建工件 描述:将构建工件发布到服务器或文件共享 版本:1.120.1

作者:微软公司


异步命令开始:上传工件


上传 1 个文件 文件上传成功。 将 'd:\a\1\a' 上传到文件容器:'#/677588/DatabaseDeploymentTest' 将工件 724 与构建 835 关联


异步命令结束:上传工件



完成:发布工件


【问题讨论】:

    标签: asp.net-core continuous-integration azure-devops visual-studio-2017 database-project


    【解决方案1】:

    Source Folder中指定$(build.sourcesdirectory),在Copy files任务的Contents中指定**\*.dacpac

    【讨论】:

    • 这很棒!一旦构建工作正常,我的发布确实遇到了问题。我在“执行 Azure SQL:DacpacTask”任务中收到以下错误。我在任务和我引用的发布配置文件中都使用服务器管理员登录。你知道这是什么原因吗?无法连接到主服务器或目标服务器“databasedeploymenttest-staging”。您必须在主服务器或目标服务器“databasedeploymenttest-staging”中有一个密码相同的用户。
    • 非虚拟机。我忘记了我更改了管理员帐户的密码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-01
    • 2021-03-06
    • 1970-01-01
    相关资源
    最近更新 更多