2009-01-13 8 views
7

Ich habe eine VB6-Anwendung, die eine .NET-Assembly aufruft, die Einstellungen aus der app.config-Datei referenziert. Standardmäßig sucht .NET nach einer Konfigurationsdatei, die nach der VB6-App benannt ist. Wie kann ich es umleiten, um einen anderen Konfigurationsdateinamen zu verwenden? Dies muss die Standardkonfigurationsdatei werden, sodass z. WCF-Einstellungen werden daraus gelesen.Den Namen der .NET-Anwendungskonfigurationsdatei ändern

+0

Da es bereits ein System gibt, das die "Standard" -Konfigurationsdatei definiert, was versuchen Sie zu tun, müssen Sie es ändern? –

+0

Ich möchte nicht, dass es nach der VB6-App benannt wird. Ich habe mehrere davon und möchte vermeiden, eine Kopie der Konfigurationsdatei für jeden zu haben, da die Einstellungen nicht wirklich für jede App spezifisch sind, sondern für die .NET Assembly. –

+2

In diesem Fall müssen Sie App.config wahrscheinlich nicht verwenden, um Ihr Problem zu lösen, da es sich um Anwendungseinstellungen handelt. Wenn die Einstellungen für die Assembly unabhängig von der Anwendung identisch sein sollen, sind das nicht nur fest codierte Werte? –

Antwort

7

Sie können es nicht ändern. Jede AppDomain-Instanz hat eine feste app.config, die über eine AppDomainSetup Instanz festgelegt wird, wenn eine neue App-Domäne erstellt wird. Obwohl Sie die Setup-Informationen über AppDomain.SetupInformation erhalten können, wurde es an dieser Stelle effektiv schreibgeschützt.

Vor diesem Hintergrund besteht eine Möglichkeit darin, eine neue Anwendungsdomäne innerhalb Ihrer Hauptfunktion zu erstellen und die Domäne so zu konfigurieren, dass sie die benötigte app.config verwendet.

+1

Danke, das habe ich am Ende gemacht. Die Hauptanwendung (.NET) legt die Umgebungsvariablen APPDOMAIN_MANAGER_TYPE und APPDOMAIN_MANAGER_ASM so fest, dass ein benutzerdefinierter AppDomainManager verwendet wird. Dadurch wird InitializeNewDomain überschrieben, sodass die AppDomainSetup.ConfigurationFile-Eigenschaft auf die freigegebene Datei .exe.config verweist. Einfach wenn du weißt wie! –

7

können Sie die Anwendung zwingen, eine bestimmte Konfigurationsdatei zu lesen, mit

System.Configuration.ConfigurationManager.OpenExeConfiguration(PATH_TO_CONFIG); 
+0

Danke. Ich brauche dies, um die "Standard" app.config-Datei zu werden, so dass z.B. WCF-Einstellungen werden daraus gelesen. Ich werde die Frage aktualisieren, um genauer zu sein. –

0

Betrachten Sie Ihre Konfiguration in einem XML-serialisierten Objekt setzen.

9

AppDomain.CurrentDomain.SetData ("APP_CONFIG_FILE", @configFile);

+1

mehr dazu hier: http://weblogs.asp.net/israelio/archive/2005/01/10/349825.aspx – russau

Verwandte Themen