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?

Dzięki!

chobo
źródło

Odpowiedzi:

97

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.

R0MANARMY
źródło
12
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
Nick
12

To są pliki transformacji Web.config. Z wdrożenia sieci Web ASP.NET przy użyciu programu Visual Studio: transformacje plików Web.config :

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.

eKek0
źródło
1

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

eaglei22
źródło
-3

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ć.

Emile
źródło
5
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 :)
Przeminęło Coding