Do czego służą pliki Web.Debug.config i Web.Release.Config?
111
Właśnie zaktualizowałem do Visual Studio 2010 i MVC 2.0 i zauważyłem, że plik Web.config ma dołączone dwa dodatkowe pliki? Czy te pliki są używane do określania ustawień debugowania i wydawania, aby nie zaśmiecać głównego pliku Web.config?
Czy w ogóle ma sens umieszczanie parametrów połączenia w głównym pliku Web.config, jeśli mam odpowiednio lokalny i zdalny plik w debugowaniu i wypuszczam plik Web.config?
Jest to nowa funkcja transformacji Web.config programu Visual Studio 2010. Więcej informacji tutaj .
Edytować:
Czy te pliki są używane do określania określonych ustawień debugowania i wydawania, aby nie zaśmiecać głównego pliku web.config?
Nie ogranicza się do trzech plików, możesz (teoretycznie) mieć tyle plików, ile masz środowisk. Web.config „najwyższego poziomu” udostępnia szablon konfiguracji sieciowej. Pliki w nim zawarte zapewniają wartości zastępcze specyficzne dla tego środowiska (na przykład jeśli masz różne parametry połączenia dla lokalnego / etapu / testu / cokolwiek).
Czy w ogóle ma sens umieszczanie parametrów połączenia w głównym pliku web.config, jeśli mam lokalny i zdalny odpowiednio w debugowaniu i wydaniu web.configs.
Miałoby to sens tylko wtedy, gdyby nie miało zamiaru zmieniać między środowiskami. Wygląda na to, że w twoim przypadku tak jest, w twoim przypadku nie, nie ma sensu zostawiać go w pliku Web.config.
Ta funkcja jest już w połowie wypalona, nawet 4 lata później! Działa tylko podczas wdrażania do pakietów Azure / Publishing. Oto ciekawy wątek: forums.asp.net/t/1532038.aspx
Istnieją dwa sposoby automatyzacji procesu zmiany ustawień pliku Web.config: transformacje Web.config i parametry Web Deploy. Plik transformacji Web.config zawiera znaczniki XML, które określają sposób zmiany pliku Web.config podczas jego wdrażania.
Można określić różne zmiany dla określonych konfiguracji kompilacji i określonych profili publikowania. Domyślne konfiguracje kompilacji to Debugowanie i Wydanie i można tworzyć niestandardowe konfiguracje kompilacji. Profil publikowania zwykle odpowiada środowisku docelowemu.
Jeśli ktoś jest zainteresowany, oto coś, co napisałem, aby mieć dynamiczne parametry połączenia dla każdego środowiska. Chciałem wdrożyć kod w dowolnym środowisku (Dev, Test, Pre-Prod, Prod ...) bez martwienia się o zmianę parametrów połączenia. Nie mogłem znaleźć dobrego sposobu na zrobienie tego z Asp.Net MVC 4, więc wymyśliłem własny sposób, aby polegać na pliku właściwości dla każdego środowiska.
Może być lepsze rozwiązanie, pochodzę ze środowiska Wicket / Java i niedawno zacząłem programować z MVC 4, więc możliwe, że istnieje lepsze rozwiązanie. Ale oto link do mojego pytania i odpowiedzi na dynamiczne parametry połączenia:
To było coś od dawna potrzebnego w VS. Niestety wydaje się, że jest problem z wdrożeniem. Na przykład rozważmy ten scenariusz (VS.2010 Ultimate, wszystkie SP):
Web.Config
Brak sekcji connectionStrings
Pełne członkostwo Użytkownik / rola / itp. Konfiguracja dostawcy przy użyciu connectionStringName = "test"
Web.Release.Config
Brak konfiguracji członkostwa (już określona w głównym pliku web.config)
Sekcja connectionStrings zawierająca CS o nazwie „test”
Web.Debug.Config
Brak konfiguracji członkostwa (już określona w głównym pliku web.config)
Sekcja connectionStrings zawierająca CS o nazwie „test”
Podczas wykonywania aplikacji pojawia się następujący błąd:
W konfiguracji aplikacji nie znaleziono nazwy połączenia „test” lub ciąg połączenia jest pusty.
Innymi słowy, ponieważ elementy parametrów połączenia znajdują się w plikach projektanta Release / Debug i są używane przez elementy konfiguracji w pliku głównym (Web.config), nie można ich rozwiązać.
Szczerze testmówiąc , jeśli masz ciąg połączenia nazwany zarówno w plikach konfiguracyjnych debugowania, jak i wydania, powinien on znajdować się w głównym pliku web.config z odpowiednimi sekcjami na szablonie. W rzeczywistości powielasz kod, co szablon ma rozwiązać za Ciebie.
R0MANARMY
3
-1: ten bardzo stary post był kompletną błędną interpretacją tego, jak używać transformacji konfiguracji sieciowej. 1 W rzeczywistości nie jest to odpowiedź (tylko nieprawidłowa skarga) i 2 nie jest to proste połączenie elementów, jak tu sugerowano. Musisz mieć wyraźne xsltpolecenia zamiany. Dobrze zrobione na uzyskanie 5 upvotes czegoś, co przyczynia się do zamieszania o tych plikach transformacji :)
To są pliki transformacji Web.config. Z wdrożenia sieci Web ASP.NET przy użyciu programu Visual Studio: transformacje plików Web.config :
źródło
Jeśli ktoś jest zainteresowany, oto coś, co napisałem, aby mieć dynamiczne parametry połączenia dla każdego środowiska. Chciałem wdrożyć kod w dowolnym środowisku (Dev, Test, Pre-Prod, Prod ...) bez martwienia się o zmianę parametrów połączenia. Nie mogłem znaleźć dobrego sposobu na zrobienie tego z Asp.Net MVC 4, więc wymyśliłem własny sposób, aby polegać na pliku właściwości dla każdego środowiska.
Może być lepsze rozwiązanie, pochodzę ze środowiska Wicket / Java i niedawno zacząłem programować z MVC 4, więc możliwe, że istnieje lepsze rozwiązanie. Ale oto link do mojego pytania i odpowiedzi na dynamiczne parametry połączenia:
Ciąg dynamicznego połączenia Asp.net MVC 4
źródło
To było coś od dawna potrzebnego w VS. Niestety wydaje się, że jest problem z wdrożeniem. Na przykład rozważmy ten scenariusz (VS.2010 Ultimate, wszystkie SP):
Web.Config
Web.Release.Config
Web.Debug.Config
Podczas wykonywania aplikacji pojawia się następujący błąd:
Innymi słowy, ponieważ elementy parametrów połączenia znajdują się w plikach projektanta Release / Debug i są używane przez elementy konfiguracji w pliku głównym (Web.config), nie można ich rozwiązać.
źródło
test
mówiąc , jeśli masz ciąg połączenia nazwany zarówno w plikach konfiguracyjnych debugowania, jak i wydania, powinien on znajdować się w głównym pliku web.config z odpowiednimi sekcjami na szablonie. W rzeczywistości powielasz kod, co szablon ma rozwiązać za Ciebie.xslt
polecenia zamiany. Dobrze zrobione na uzyskanie 5 upvotes czegoś, co przyczynia się do zamieszania o tych plikach transformacji :)