2010-01-15 5 views
5

Während eine dritte Partei DLL ich die folgende Ausnahme erhalten:System.Configuration web.config und app.config

ExePath muss angegeben werden, wenn sie nicht in einem Stand-alone-exe ausgeführt

mit der folgenden Spuren

System.Configuration.ConfigurationManager.OpenExeConfigurationImpl (ConfigurationFileMap FileMap, Boolean isMachine, ConfigurationUserLevel Userlevel, String exePa th).

Der Grund, den ich fand, war, dass es nach app.config suchte, und ich die Details in web.config zur Verfügung gestellt hatte. Meine Frage ist: Warum unterscheidet die System.Configuration zwischen web.config und app.config? Irgendwelche Gedanken?

Antwort

7

Executables:

Mehrere .NET ausführbare Dateien im selben Verzeichnis leben können. Da im selben Verzeichnis nicht zwei Dateien mit demselben Namen vorhanden sein können, müssen die Anwendungen für ihre Hauptkonfigurationsdateien andere Namen verwenden. Das applicationName.exe.config Schema löst das.

Webanwendungen/sites:

.NET Web-Anwendungen sind DLLs kompiliert und Web-Sites sind in der Regel just-in-time zusammengestellt. Daher gibt es bei diesen Arten von Projekten keinen "Haupteinstiegspunkt". Es ist möglich, ein Webprojekt zu erstellen, bei dem jede Seite in eine eigene Assembly kompiliert wird. Welches ist die Hauptversammlung? Nach welcher Assembly soll die Konfigurationsdatei benannt werden?

Glücklicherweise kann nur ein Webprojekt aus einem einzigen Verzeichnis gehostet werden, sodass hier nur eine Hauptkonfigurationsdatei gespeichert wird. Dadurch kann der Name der Hauptkonfigurationsdatei per Konvention ausgewählt werden, und dieser Dateiname ist zufällig web.config.

6

web.config ist nur für Ihre Website und Webanwendungen. Es bleibt fest, d.h. ändert seinen Namen nicht; es heißt immer web.config.

app.config ist für nicht-Web-Anwendungen - Winforms, WPF, NT Services usw. Diese wird in YourApplicationName.exe.config umbenannt, wenn Sie Ihr Projekt erstellen. Sie werden nie einen app.config mit diesem Namen im Verzeichnis einer Anwendung finden (oder wenn Sie dies tun, wird es nicht verwendet).

Warum Microsoft wählen, um zwei verschiedene Arten von Namen zu verwenden - ich weiß es nicht - fragen Sie Microsoft.

So müssen Sie im Grunde nur wissen, was Sie beschäftigen und die Informationen an der richtigen Stelle bereitstellen.

+1

+1, ich habe meine Gedanken bezüglich der ** warum ** Abschnitt in meiner Antwort unten hinzugefügt. –