Сборка DACPA C изменяет ссылки на все прописные буквы - PullRequest
1 голос
/ 18 марта 2020

У меня есть решение с двумя проектами базы данных 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?

...