使用Cake构建含SQL项目的.NET Core 2.0解决方案遇MSB4019错误求助
问题原因分析与解决方案
这个错误的核心原因很明确:你用的DotNetCoreBuild任务是基于dotnet SDK自带的MSBuild来执行构建的,但dotnet SDK并不包含SQL Server Data Tools(SSDT)相关的构建目标文件——也就是报错里提到的Microsoft.Data.Tools.Schema.SqlTasks.targets。
这个目标文件是属于Visual Studio专属MSBuild工具链的,只存在于你VS安装目录下的MSBuild路径里(比如你手动执行成功的C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe),而dotnet SDK自带的MSBuild(C:\Program Files\dotnet\sdk\2.1.4\下的版本)没有集成SSDT的构建支持,自然找不到这个依赖文件。
解决方法
把Cake脚本里的DotNetCoreBuild替换成直接调用VS的MSBuild工具,和你手动执行成功的逻辑保持一致。修改后的Build任务示例如下:
Task("Build") .IsDependentOn("RestoreNuGetPackages") .IsDependentOn("SetVersion") .Does(() => { Information("Running Visual Studio MSBuild"); MSBuild("../MySolution.sln", new MSBuildSettings { Configuration = configuration, Loggers = new List<MSBuildLogger> { new MSBuildFileLogger { LogFile = "MyProjectOutput.log", Verbosity = MSBuildVerbosity.Diagnostic } } }); });
这样就能成功构建包含SQL Server项目的解决方案了。
内容的提问来源于stack exchange,提问作者Ambuj
相关产品推荐
相关产品推荐

