Konec zmatku s web.config: různé konfigurace pro vývojovou a ostrou verzi

Známe to všichni: nová verze aplikace je hotová je je "jenom" potřeba ji nahrát na ostrý server a zprovoznit. Což mimo jiné znamená upravit web.config: connection stringy pro připojení do databáze, e-mailové adresy a další parametry.

Visual Studio 2005 Web Deployment Projects nabízejí jisté řešení. Lze definovat pravidla, kdy se mají různé sekce web.configu nahradit daty z jiných XML souborů. Přiznám se, že tomu řešení jsem moc na chuť nepřišel, protože mi přijde příliš komplikované, navíc se mi nikdy nepodařilo ho rozchodit, jak jsem potřeboval.

Používám jiné řešení: v aplikaci mám soubor Web.Config (obsahuje nastavení pro vývoj) a soubor Web.Production.Config, který obsahuje nastavení pro provoz na ostrém serveru. Jediné, co potřebuji udělat, je při nasazení na ostrém serveru smazat původní Web.Config a nahradit ho souborem Web.Production.Config.

I tuto činnost lze automatizovat. Deployment projekty jsou totiž standardní MSBuild projektové soubory, takže je lze libovolně modifikovat, přidávat různé akce, které mají proběhnout při buildu.

Když na název deployment projektu ve Visual Studiu klepnete pravým tlačítkem a z kontextového menu vyberete "Open project file", můžete editovat přímo XML soubor *.wdproj.

Na konec souboru (ale před </Project>) můžete přidat element <Target name="AfterBuild">, kde můžete specifikovat, jaké akce se mají provést po dokončení kompilace. Standardní akce zahrnují i práci se soubory. Shora uvedenou operaci tedy můžete automatizovat takto:

<Target Name ="AfterBuild">

  <Delete Files ="$(OutputPath)\Web.Config" />

  <Copy SourceFiles ="$(OutputPath)\Web.Production.Config" DestinationFiles="$(OutputPath)\Web.Config" />

  <Delete Files ="$(OutputPath)\Web.Production.Config" />

</Target>

Možnosti jsou samozřejmě nepoměrně širší, oceníte je především v případě složitějších scénářů deploymentu. Podrobnější informace o nich najdete na MSDN.

  • Altairis
  • Nemesis
  • Microsoft MVP
  • IIS
  • ASP.NET