Visual Studio 2013 の使用
いくつかの異なる環境に展開できる 8 つの SSDT プロジェクトのセットがあります。ただし、各プロジェクトの高度な公開設定は同一であることを意図しています。現在、環境ごとに個別の発行プロファイルを作成しています。つまり、まったく同じ設定を使用して接続文字列が異なる最大 20 の発行プロファイルがあります。
データベースのパブリッシュ設定を微調整すること (SSDT にはまだ少し慣れていないため、定期的に発生します) は最も面倒ですが、できるように変換をパブリッシュ プロファイルに適用することができないため、これを回避する方法をまだ見つけていません。 ASP.NET プロジェクトの web.config ファイルに。Visual Studio SlowCheetah プラグインをインストールしてみましたが、発行プロファイルを右クリックしても変換を適用するオプションが表示されないため、SSDT プロジェクトでは機能しないようです。
DB を開発環境または QA 環境にデプロイするときに、接続の詳細を手動で入力することをチームに考えさせたくありません。20 個のほぼ同一の発行プロファイルを管理する必要がないように、マスター発行プロファイルを設定するか、共有設定のグループを指定する方法はありますか?
編集: SAS の回答を使用して、.sqlproj ファイルの次の XML をまとめることができました。
<PropertyGroup>
<PublishProfileDir>$(ProjectDir)Publish Profiles\</PublishProfileDir>
<TemplatePublishProfile>$(PublishProfileDir)Baseline\publish.xml</TemplatePublishProfile>
</PropertyGroup>
<Target Name="CopyXml" AfterTargets="Build">
<Copy SourceFiles="$(TemplatePublishProfile)" DestinationFolder="$(PublishProfileDir)Dev"/>
<Copy SourceFiles="$(TemplatePublishProfile)" DestinationFolder="$(PublishProfileDir)Qa"/>
</Target>
<ItemGroup>
<DevPublishUpdates Include="ConfigUpdates">
<XPath>/msb:Project/msb:PropertyGroup/msb:TargetDatabaseName</XPath>
<NewValue>CountyRecordsDev</NewValue>
</DevPublishUpdates>
<DevPublishUpdates Include="ConfigUpdates">
<XPath>/msb:Project/msb:PropertyGroup/msb:DeployScriptFileName</XPath>
<NewValue>CountyRecords.Dev.Sql</NewValue>
</DevPublishUpdates>
</ItemGroup>
<Target Name="UpdateXml" AfterTargets="CopyXml">
<Message Text="Editing Derived Xml Publish Profiles" Importance="high" />
<XmlPoke Namespaces="<NamespacePrefix='msb'Uri='http://schemas.microsoft.com/developer/msbuild/2003'/>"
XmlInputath="$(PublishProfileDir)Dev\publish.xml"
Query="%(DevPublishUpdates.XPath)"
Value="%(DevPublishUpdates.NewValue)" />
</Target>
唯一の欠点は、ある変換が別の変換を上書きしないようにするために、すべての公開プロファイル用に別のフォルダーが必要なように思われることです。既存のファイルを単純に上書きする方法を見つけることができなかったようです。XmlPoke の場合、namespaces 属性は操作にとって重要です。このプロセスの詳細については、Sayed Ibrahim Hashimi によるこのブログ投稿を参照してください。