我使用VS2017 Professional创建的解决方案包含一个引用master数据库的SQL Server数据库项目。使用Hosted VS2017代理在Visual Studio Team Services中构建我的解决方案时,我收到以下错误:
2017-07-14T12:44:17.8387743Z ## [错误] C:\ Program Files(x86)\ Microsoft 视觉 工作室\ 2017年\企业\的MSBuild \微软\ VisualStudio的\ V15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): 错误SQL72027:文件" C:\ Program Files(x86)\ Microsoft Visual 工作室\ 2017年\专业\ Common7 \ IDE \扩展\微软\ SQLDB \扩展\ SqlServer的\ 110 \ SqlSchemas \ master.dacpac" 不存在。 2017-07-14T12:44:17.8397816Z C:\ Program Files (x86)\ Microsoft Visual 工作室\ 2017年\企业\的MSBuild \微软\ VisualStudio的\ V15.0 \ SSDT \ Microsoft.Data.Tools.Schema.SqlTasks.targets(559,5): 生成错误SQL72027:文件" C:\ Program Files(x86)\ Microsoft Visual 工作室\ 2017年\专业\ Common7 \ IDE \扩展\微软\ SQLDB \扩展\ SqlServer的\ 110 \ SqlSchemas \ master.dacpac" 不存在。 [d:\一个\ 3 \ S \主\ ItAsset.Database \ ItAsset.Database.sqlproj]
如何解决此问题并获得我在VSTS中构建的解决方案?
答案 0 :(得分:36)
我在多开发人员的情况下得到了一点点。这似乎发生在VS2017 SSDT项目中,签入代码的开发人员最初将Visual Studio安装在与您不同的路径或Visual Studio的另一个实例上。例如,如果开发人员A在C:\上默认安装,但开发人员B将他的VS2017安装到E:\驱动器,那么创建对Master的引用的人将工作,另一个将无法找到dacpac文件。
查看.sqlproj文件,您可能会找到对Master数据库的引用:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
<HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac</HintPath>
注意:<HintPath>
是正确的,但Include="
是硬编码路径。似乎没有像通常那样遵循提示路径。若要解决此问题,请尝试将HintPath元素的内容复制到Include属性。保持HintPath不变。
<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
答案 1 :(得分:15)
这是针对Visual Studio 2017的SSDT中的一个错误。
解决方法是手动编辑项目文件,用$(DacPacRootPath)变量替换完整路径。或者,您可以将SSDT用于Visual Studio 2015。
该错误已在Microsoft Connect网站上报告过两次: https://connect.microsoft.com/SQLServer/Feedback/Details/3141348
而且,在这里: https://connect.microsoft.com/SQLServer/Feedback/Details/3133716
请注意,Connect网站已停用。请在此处对UserVoice投票:
答案 2 :(得分:4)
它使用Hosted VS2017代理中不存在的绝对路径。 (专业 vs 企业)。您可以检查项目文件(通过nodepad打开sqlproj文件)
您可以将master.dacpac复制到项目文件夹并将其包含到项目中,然后添加对该文件的引用。
答案 3 :(得分:0)
尝试在VS2017中创建的VS2019中打开SSDT,需要进行更改
发件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SqlSchemas\master.dacpac">
收件人:
<ArtifactReference Include="C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\Extensions\Microsoft\SQLDB\Extensions\SqlServer\130\SQLSchemas\master.dacpac">
注意:Enterprise Visual Studio