Ho un server CI (Bamboo, ma non penso che sia importante) creare e distribuire automaticamente la mia applicazione. Durante lo sviluppo locale che uso LocalDB (<connectionStrings>
nodo nel mio web.config
)Modo corretto per impostare stringhe di connessione in ci durante msbuild/deploy
<add name="MyApp" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;Connect Timeout=30;Initial Catalog=MyApp" />
<add name="MyApp_Patients" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDB)\v11.0;Integrated Security=True;Connect Timeout=30;Initial Catalog=AppleHms_MyApp" />
...
Se distribuito, ovviamente, non deve utilizzare questo. Dovrebbe utilizzare la stringa di connessione del server SQL di distribuzione.
So che posso scrivere una trasformazione web.config per questo e so anche che posso crittografare il web.config ma non sono sicuro di come la stringa di connessione db debba entrare correttamente. Ciò che rende senso per me è per il server CI per sovrascrivere ogni connectionString - quindi il mio config trasformare dovrebbe forse essere simile a questo
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<connectionStrings>
<add name="MyApp" providerName="System.Data.SqlClient" connectionString="${main-db-connectionstring}" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
<add name="MyApp_Patients" providerName="System.Data.SqlClient" connectionString="${patients-db-connectionstring}" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
...
</connectionStrings>
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
</configuration>
Con le sostituzioni provenienti dalle variabili nel mio server CI (presumibilmente una parte di msbuild o distribuire)?
È corretto che questo sia il modo "giusto" per farlo? Che cosa devo fare esattamente con msbuild/deploy per farlo accadere?
Grazie - puoi dare un esempio di come apparirebbe il comando msdeploy o msbuild? Come dovrei passare un valore dalla riga di comando? La mia lettura della (quasi inutile) documentazione e il (molto più utile) blog collegato è che dovrebbe essere memorizzato nel csproj? –