У меня есть решение с двумя проектами базы данных SSDT: FooDB и FooDependenciesDB. FooDB содержит ссылки на master, msdb и FooDependenciesDB
FooDB.sqlproj:
...
<ItemGroup>
<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\msdb.dacpac">
<HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\msdb.dacpac</HintPath>
<SuppressMissingDependenciesErrors>True</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>msdb</DatabaseVariableLiteralValue>
</ArtifactReference>
<ArtifactReference Include="$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac">
<HintPath>$(DacPacRootPath)\Extensions\Microsoft\SQLDB\Extensions\SqlServer\140\SqlSchemas\master.dacpac</HintPath>
<SuppressMissingDependenciesErrors>True</SuppressMissingDependenciesErrors>
<DatabaseVariableLiteralValue>master</DatabaseVariableLiteralValue>
</ArtifactReference>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\FooDependenciesDB\FooDependenciesDB.sqlproj">
<Name>FooDependenciesDB</Name>
<Project>{[GUID]}</Project>
<Private>True</Private>
<SuppressMissingDependenciesErrors>True</SuppressMissingDependenciesErrors>
</ProjectReference>
</ItemGroup>
...
Сборка генерирует FooDB.dacpa c, FooDependenciesDB.dacpa c, master.dacpa c и msdb.dacpa c. FooDB.dacpa c включает модель. xml, которая имеет те же ссылки, но обновлена для всех прописных букв:
модель. xml
...
<CustomData Category="Reference" Type="SqlSchema">
<Metadata Name="FileName" Value="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS\MASTER.DACPAC" />
<Metadata Name="LogicalName" Value="master.dacpac" />
<Metadata Name="ExternalParts" Value="[master]" />
<Metadata Name="SuppressMissingDependenciesErrors" Value="True" />
</CustomData>
<CustomData Category="Reference" Type="SqlSchema">
<Metadata Name="FileName" Value="C:\PROGRAM FILES (X86)\MICROSOFT VISUAL STUDIO\2019\ENTERPRISE\COMMON7\IDE\EXTENSIONS\MICROSOFT\SQLDB\EXTENSIONS\SQLSERVER\140\SQLSCHEMAS\MSDB.DACPAC" />
<Metadata Name="LogicalName" Value="msdb.dacpac" />
<Metadata Name="ExternalParts" Value="[msdb]" />
<Metadata Name="SuppressMissingDependenciesErrors" Value="True" />
</CustomData>
<CustomData Category="Reference" Type="SqlSchema">
<Metadata Name="FileName" Value="[HOMEPATH]\FOODB\FOODEPENDENCIESDB\BIN\RELEASE\FOODEPENDENCIESDB.DACPAC" />
<Metadata Name="LogicalName" Value="FooDependenciesDB.dacpac" />
<Metadata Name="SuppressMissingDependenciesErrors" Value="True" />
</CustomData>
...
Пока sqlpackage (Windows или Linux) не использует предоставленные пути, если ссылки копируются в папку сборки, требуется, чтобы файлы имели имя, как в ссылке FileName, что вызывает проблему для sqlpackage для Linux, поскольку он чувствителен к регистру.
Есть ли способ настроить DACPA C build на , а не обновить ссылки на все прописные буквы? Или есть какой-то обходной путь, кроме переименования встроенных файлов перед запуском sqlpackage?