Danke für den Followup Kommentar, ich glaube, was Sie versuchen zu tun ist, wenn Sie schreiben und bereitstellen Code unterschiedliche dacpacs je nach Projekt nutzen können ?
Für jedes Implementierungsteam kann eine andere Version des freigegebenen Dacpac bereitgestellt werden, sodass Sie die Dateien nicht einfach an einem freigegebenen Speicherort ablegen und den dacpac "Product_Latest.dacpac" aufrufen können. So erhält jeder immer die neueste Version.
".sqlproj" -Dateien sind standardmäßige Msbuild-Skripts und Referenzen können mithilfe von Msbuild-Eigenschaften verwaltet werden, sodass Sie die Referenz zur Laufzeit technisch ändern können. Wenn Sie Ihre .sqlproj Datei bearbeiten und eine Eigenschaft im ersten <PropertyGroup>
Tag hinzufügen, ich verwendet:
<ProdDacpacVersion Condition="'$(ProdDacpacVersion)' == ''">v1</ProdDacpacVersion>
v1 der eindeutige Name für die Version Ordner ist - man muss nur etwas brauchen, wollen die dacpac Sie zu identifizieren.
Ich legte die Eigenschaft direkt nach TargetDatabaseSet und IncludeCompositeObjects.
Wenn Sie dann den Verweis auf die dacpac finden und statt
<ArtifactReference Include="..\..\..\..\..\Desktop\prod\v1\Database2.dacpac"> <HintPath>..\..\..\..\..\Desktop\prod\v1\Database2.dacpac</HintPath> <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors> </ArtifactReference>
Verwenden Sie die Eigenschaft von oben:
<ArtifactReference Include="..\..\..\..\..\Desktop\prod\$(ProdDacpacVersion)\Database2.dacpac"> <HintPath>..\..\..\..\..\Desktop\prod\$(ProdDacpacVersion)\Database2.dacpac</HintPath> <SuppressMissingDependenciesErrors>False</SuppressMissingDependenciesErrors> </ArtifactReference>
Dann wird die Referenz die Eigenschaft wird das bekommen Weg des Dacpac. Es gibt ein paar Möglichkeiten, wie Sie die Eigenschaft festlegen können, Sie könnten die .sqlproj-Datei bearbeiten, wenn Sie eine neue Version der Eigenschaft aus einer Datei oder einer Umgebungsvariablen lesen wollen (ich belasse den msbuild-Spaß für Sie!) .
Ich würde, als Standard wurde jedes Mal die Referenz geändert entweder das Projekt neu zu laden oder Visual Studio neu starten - es wird nicht lange dauern, und es wird viel Fluchen :)
speichern Wenn Sie die dacpac der Bereitstellung, Die Bereitstellung sucht zuerst im selben Ordner nach Referenzen. Stellen Sie daher sicher, dass Sie die richtige Datei bei der Bereitstellung in den Ordner bin kopieren.
dacpacs auf den freigegebenen Speicherort setzen –
nur um zu verdeutlichen - meinen Sie, wenn Sie das Projekt bereitstellen, immer das neueste dacpac bereitstellen oder das beim Erstellen des Implementierungsprojekts, das Sie gegen ein Dacpac erstellen möchten, das einige Bits hat fehlt (aus der alten Version)? –
Dmitrijs Kommentar ist ziemlich genau das, was wir tun würden. Erstellen Sie die entsprechende Version von dacpac, legen Sie sie an einem freigegebenen Speicherort ab. Versionskontrolle, die notwendig ist und vielleicht notiert, welche Builds benötigt werden, damit alles richtig funktioniert.Idealerweise sollte der Verweis in einem allgemeinen Pfad wie ".. \ .. \ .. \ Schema \ DB1.dacpac" oder etwas ähnlichem liegen, so dass er für alle Projekte gleich ist. –