Muszę przełączać się między 3 różnymi środowiskami podczas opracowywania mojej aplikacji internetowej - Rozwój, UAT i Prod. Mam różne połączenia z bazą danych w moich plikach konfiguracyjnych dla wszystkich 3. Widziałem przełączanie tych ustawień ręcznie przez zmianę wszystkich referencji, a następnie przebudowanie rozwiązania, a także za pomocą dyrektyw preprocesora. Czy istnieje prosty sposób na zrobienie tego w oparciu o pewną zmienną, tak aby konfiguracja nie musiała być zmieniana przy każdorazowym wdrażaniu w nowym środowisku?Najlepszy sposób przełączania konfiguracji między środowiskami programowania/UAT/Prod w ASP.NET?
Odpowiedz
Wydaje mi się, że można korzystać z Visual Studio 2005 Web Deployment Project s.
Dzięki temu możesz nakazać aktualizację/modyfikację sekcji pliku web.config w zależności od konfiguracji kompilacji.
Aby uzyskać szybki przegląd/próbkę, zobacz this blog entry from Scott Gu.
Scott Hanselman zasugerował jeden sposób, aby to zrobić:
http://www.hanselman.com/blog/ManagingMultipleConfigurationFileEnvironmentsWithPreBuildEvents.aspx
Otrzymuję 404 na tej stronie. Czy może być w stanie podsumować? –
Nie ma nic złego w adresie URL, jeśli wycinasz go "n" wklej ... Bardzo dziwne ... –
Dziwne - może Scott sprawdza stronę odsyłającą? – Whisk
Przyjąłem Jean Paul Boodhoo Method zmieniających się konfiguracji. Ogólną ideą jest posiadanie jednego lub więcej TOKENIZOWANYCH plików konfiguracyjnych TEMPLATE zamiast samych plików konfiguracyjnych. Następnie masz zadanie skryptu budowania, które zastępuje tokeny wartościami z POJEDYNCZEGO pliku właściwości lokalnych. Ten plik właściwości zawiera wszystkie różnice w konfiguracji i jest unikalny na kopię roboczą.
Ten system sprawdził się doskonale i początkowo konfiguracja jest łatwa w zarządzaniu zmianami środowiska.
Jestem wielkim fanem używając MSBuild, w szczególności zadań MSBuild Wspólnoty (http://msbuildtasks.tigris.org/) i nie jest zadaniem XSLT do przekształcenia web.config z odpowiednimi ustawieniami ciąg połączenia, itp
trzymam zadania te poręczne:
<Target Name="Configs">
<Xslt RootTag="" Inputs="web.config" Output="Web.$(COMPUTERNAME).config" Xsl="web.config.$(COMPUTERNAME).xslt" Condition="Exists('web.config.$(COMPUTERNAME).xslt')" />
Oczywiście nie jest to 100%, co jesteś po, to tak każdy dev może mieć własne web.c onfig.
Ale nie ma powodu, dla którego nie można zastosować powyższej zasady, aby mieć wiele konfiguracji kompilacji, która stosuje odpowiedni XSLT.
Moja XSLT wygląda następująco:
<?xml version="1.0" encoding="utf-8"?>
<!-- Dev -->
<xsl:template match="/configuration/connectionStrings/add[@name='MyConnectionString']/@connectionString">
<xsl:attribute name="connectionString">Data Source=MyServer;Initial Catalog=MyBD;User ID=user;password=pwd</xsl:attribute>
</xsl:template>
<xsl:template match="node()">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
Zajżyłem do MSBuild i/lub NA Nt jako moja kolejna rzecz do nauki, ale jeszcze się nie zacząłem. Wiem, że muszę !! –
Moja odpowiedź łączy się z serią postów na blogu, które uczą, jak zautomatyzować kompilację za pomocą NAnt. Może się okazać, że jest to przydatne miejsce do rozpoczęcia pracy. – Gilligan
Nie mam żadnego doświadczenia z NAnt, co oferuje ponad MSBuild? –
zawsze można użyć NANT + NAnt.Contrib zmodyfikować web.config podczas kompilacji. NAnt ma zadania xmlpeek i xmlpoke, które pozwalają na aktualizację plików xml.
np.
< xmlpoke file = "$ {dist.dir} /Web.config" xpath = "/ configuration/applicationSettings/MyProj.Web.Properties.Ustawienia/ustawienie [@name = 'MyProj_Web_Service']/value " value =" http: // {AppServer} /Service.asmx "/ >
- 1. Jaki jest najlepszy sposób przełączania zmiennej binarnej?
- 2. Najlepszy sposób, aby zapisać zmienne między postbacks asp.net?
- 3. Jaki jest najlepszy sposób udokumentowania celowego przełączania przełączników?
- 4. Metody zarządzania plików konfiguracyjnych między wieloma środowiskami
- 5. LINQ to SQL - najlepszy sposób przełączania się między test a dev db
- 6. Najlepszy sposób zarządzania ustawieniami konfiguracji aplikacji Railsy w bazie danych?
- 7. Najlepszy sposób implementacji DropDownList w ASP.NET MVC 2?
- 8. Jaki jest związek między środowiskami i projektami w virtualenvwrapper?
- 9. Najlepszy/lepszy/optymalny sposób konfiguracji serwera pomostowego/programistycznego
- 10. Najlepszy sposób konfiguracji środowiska kompilacji systemu Windows dla C/C++
- 11. Jaki jest najlepszy sposób modyfikacji konfiguracji projektu z poziomu wtyczki?
- 12. Najlepszy sposób udostępniania obrazów między kilkoma aplikacjami
- 13. Najlepszy sposób komunikacji między instancjami dyrektywy
- 14. Najlepszy sposób na przełączanie między dwoma fragmentami
- 15. Niepowodzenie konfiguracji ASP.NET OpenWeb
- 16. Niestandardowa sekcja konfiguracji ASP.NET
- 17. Sposób przełączania zależności na podstawie profilu kompilacji
- 18. Scenariusz przełączania awaryjnego dostawcy stanu sesji ASP.Net
- 19. Identyfikator konfiguracji win64 w Qmake
- 20. Najczystszy sposób przełączania zmiennej binarnej w Javie?
- 21. Jaki jest najlepszy sposób zarządzania użytkownikami w ASP.NET MVC
- 22. Najlepszy sposób renderowania System.Drawing.Image w ASP.NET MVC 3 View
- 23. Najlepszy sposób na tworzenie raportów w ASP.NET MVC
- 24. Sekcja konfiguracji rdzenia ASP.NET w uruchomieniu
- 25. Pomoc w konfiguracji Elmah w ASP.NET
- 26. Najlepszy sposób na łączenie łańcuchów w PHP z odstępami między
- 27. Najlepszy sposób przekazywania obiektów między klasami w różnych wątkach?
- 28. Najlepszy sposób na przejście między dwoma obrazami w UIImageView
- 29. Integrowanie prologu z innymi środowiskami
- 30. skrótu do przełączania między kartami w Chrome Developer Tools
Ten oferował najmniejsze tarcie i długi czas, a ja byłam w stanie go uruchomić i uruchomić raczej szybko. Dzięki za pomoc! –
Nie ma problemu, cieszę się pomóc –