master.dacpac 在 VS 2019 中来自哪里?

Where does master.dacpac come from in VS 2019?

我们有一些 运行 的构建任务,我一直无法弄清楚为什么 MS 构建工具没有安装 master 和msdb dacpac 文件。

这是它现在所在的位置:

C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas

目前在VS2019 Professional中加入了Data Storage and Processing Workload。 SQL Server Data Tools 依赖于其他几个工作负载,例如:

ASP.NET 和网络开发 ASP.NET 和网络开发工具 Azure 数据湖和流分析工具 用于 Web 开发的云工具 在 MS Build Tools 中,我注意到在安装 Data Tools 工作负载后未生成 dacpac 文件。

我是不是找错地方了?什么在 C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas 中生成 master.dacpac 和 msdb.dacpac?

Am I looking in the wrong place? What is generating the master.dacpac and the system.dacpac in C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas?

据我所知,master.dacpacmsdb.dacpac 文件就像模板一样,您将在项目中将其用作默认数据库。它们被用于在 VS2019 中开发数据库项目。

测试

我的机器安装了新的VS2019专业版。首先,我安装了工作负载 .Net desktop development 并且目标路径中没有生成文件。然后我安装了 Data Storage and processing 工作负载,发现文件已安装。之后,我尝试在Build Tool中安装相应的模块,但是并没有生成文件。

基于此,我可以确认此文件是在您在 VS2019 IDE 中安装 Data Storage and processing 工作负载时生成的,而不是生成工具。

此外,对于Build Tool,用于构建项目包括数据库项目,安装Build Tool时不会生成文件,这只是设计的。

示例

<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac">
      <HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SqlSchemas\master.dacpac</HintPath>
    <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors>
    <DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue></ArtifactReference>

在VS2019开发时引用系统数据库时,提示路径为

C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer0\SQLSchemas`.

$(DacPacRootPath)会选择C:\Program Files (x86)\Microsoft Visual Studio19\Professional\Common7\IDE

但是在没有安装VS2019的情况下使用Build Tool在另一台机器上构建这个项目时,可能会遇到一些客户反映的this issue

>>遇到的话可以参考一下,微软好像在最新版的MSBuild Tool中有修复

此外,如果你只是想让MSBuild Tool在MSBuild文件夹中生成master.dacpac文件,你可以向DC Forum建议一个功能来反映它。

希望对您有所帮助。

Lance Li suggested these files are indeed being installed, not generated And yes, there was a bug in VS 2019 Build Tools which was fixed in 16.4.1 version of Build Tools.