无法使用数据库项目构建.net核心项目。错误MSB4019

时间:2017-09-26 16:36:07

标签: asp.net-core visual-studio-2017 database-project

我有一个新的.net Core 2.0 Web API项目(在Visual Studio 2017版本15.3.5中),如果我添加一个新的数据库项目,我无法构建解决方案

  

错误MSB4019:找不到导入的项目“C:\ Program Files \ dotnet \ sdk \ 2.0.0 \ Microsoft \ VisualStudio \ v11.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTask​​s.targets”。确认声明中的路径是否正确,以及该文件是否存在于磁盘上。

我尝试了各种解决方案

  • 安装了Visual Studio Installer中缺少的几乎所有内容
  • 已安装的Visual Studio Build Tools 2017
  • 修复Visual Studio
  • 没有运气,我试图在C:\上找到Microsoft.Data.Tools.Schema.SqlTask​​s.targets文件到项目文件中的添加引用(我不知道在构建解决方案时是否有效) VSTS)。

那么为什么我可以将一个数据库项目添加到一个普通的API项目中,一切正常但不适用于.net核心项目?

数据库项目不能与.net Core一起使用吗?我已经搜索了相关信息,但很抱歉我找不到它。

我不知道该怎么做。希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

好的,我设法在我的计算机上找到了Microsoft.Data.Tools.Schema.SqlTask​​s.targets文件。

然后我需要卸载项目并进行编辑

我改变了这一行

<SSDTExists Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>

到我文件的硬编码路径

<SSDTExists Condition="Exists('C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\SSDT\Microsoft.Data.Tools.Schema.SqlTasks.targets')">True</SSDTExists>

现在它建立在我的计算机和VSTS上。

但为什么这就是我不知道的。

答案 1 :(得分:0)

我在使用Azure DevOps CI / CD管道以及本地在VS Code上构建SQL Server项目时遇到了完全相同的问题。在Azure DevOps上,没有一个预建的构建任务对我有用,在本地,我只能在Visual Studio上编译SQL Server项目,这很烦人。您的解决方案对我不起作用,按照您的建议进行操作后,我会遇到与第一个错误相关的.dll丢失错误。

我通过避免将SQL Server项目添加到解决方案中来解决了这个问题。

我通过使用MSBuild SDK实现了这一目标,该功能能够从一组SQL脚本生成SQL Server数据层应用程序包(.dacpac)。通过将第二个项目添加到解决方案中,我设法继续利用通过Visual Studio上的SQL Server Object Explorer将项目链接到实时数据库的优势。在此answer中,我对自己的实现进行了更详细的说明。