Teraz Widziałem to pytanie, zanim się na to w sposób wariantów, ale zaskakująco nie w tej formie:pojedynczy plik konfiguracyjny do sporządzania roztworu
mam rozwiązanie z wielu usług internetowych (projektów), które trzeba ze sobą rozmawiać inny. Po opublikowaniu każda z tych usług internetowych może trafić na inny komputer z inną bazą danych. Aby powiedzieć każdej usłudze internetowej, gdzie są wszystkie inne usługi internetowe, chcę zachować pojedynczy plik konfiguracyjny podczas programowania.
Chciałbym tego oczekiwać po opublikowaniu konfiguracji, która będzie obecna w każdym opublikowanym projekcie. I chciałbym się spodziewać, że plik konfiguracyjny będzie edytowalny po opublikowaniu, więc mogę szybko migrować określoną usługę internetową, a następnie po prostu edytować wszystkie pliki konfiguracyjne innych usług internetowych.
Nie chcę tego robić w bazie danych, ponieważ plik konfiguracyjny powinien także zawierać ustawienia połączeń do bazy danych.
natknąłem następujących pomysły/myśli/pytania:
- Mam projektu dll o nazwie „wspólne”, który odwołuje się do innych projektów. Dajmy mu jeden shared.config i zbudujmy klasę w tym projekcie, której można użyć do odczytania pliku shared.config wykonując
System.Configuration.ConfigurationManager.OpenExeConfiguration("shared.config")
. Wystarczy się upewnić, że plik shared.config zostanie opublikowany wraz z biblioteką DLL.
Gorąco popieram to rozwiązanie, ponieważ pozwoliłoby to również na przechowywanie pliku web.config w każdym projekcie z ustawieniami specyficznymi dla projektu. I udostępnij plik shared.config, który ma ustawienia wspólne. Ale czytam, że to nie powinno być traktowane lekko i może mieć niepożądane skutki uboczne, takie jak problemy z dostępem do plików; choć zastanawiam się, czy to dotyczy mojej sprawy. Chciałbym również poprosić o pomoc tutaj, w jaki sposób faktycznie zrealizować to, ponieważ nie sądzę Visual Studio obsługuje app.config dla projektów DLL po wyjęciu z pudełka.
- Zastanawiam się również nad tworzeniem pliku shared.config w elementach rozwiązania. Następnie łącząc ten plik wewnątrz każdego projektu. W pliku Web.config każdego projektu dodaj:
<appSettings configSource="shared.config" />
wskazujący połączony plik w tym projekcie.
Chociaż nie mogę znaleźć żadnego powodu, aby tego nie robić, pierwsze wdrożenie nie powiodło się. Wygląda na to (przynajmniej podczas programowania), C# nie może odnaleźć połączonego pliku shared.config. Zgaduję, że łączenie plików nie jest wykonywane natychmiastowo ani utrzymywane po utworzeniu połączonego pliku, ale plik jest kopiowany tylko do projektów KIEDY wykonuję publikację. Tym samym pozostawiając brakujący plik podczas programowania. Czy to jest poprawne?
jaka jest Twoja strategia wydawnicza? Czy jest to ciągłe środowisko integracyjne czy ręczne publikowanie? – CoderHawk
Przykro mi to mówić, że jestem nowy w .NET, C# i visual studio. Nie wiem, co oznacza ciągłe środowisko integracyjne, i domyślam się, że robię ręczne publikowanie. –
Ciągła integracja polega na skonfigurowaniu usługi polegającej na kasie, kompilacji, testowaniu i wdrażaniu kodu za każdym razem, gdy dokonujesz zmiany - z różnymi zastrzeżeniami i warunkami właściwymi dla twojego projektu. W żaden sposób nie jest ani ograniczony, ani wszechobecny w .net - wiele narzędzi ma swoje korzenie w ekosystemie Java, na przykład; i jestem pewien, że jest wielu programistów .net, którzy nie używają takich rzeczy. Spójrz na http://jenkins-ci.org/ jako przykład systemu CI. –