5

Wie können Sie beim Erstellen eines Visual Studio-Add-Ins eine app.config für das Add-In verwenden? Wenn ich dem Projekt ein Projekt hinzufüge und es dann deploye, wenn das Add-In ausgeführt wird und programmgesteuert versuche, über das ConfigurationManager.AppSettings darauf zuzugreifen, wird die Konfigurationsdatei für das Add-In nicht abgerufen.
Mache ich etwas falsch oder gibt es ein anderes Mittel, um auf dateibasierte Konfigurationseinstellungen für ein Add-In zuzugreifen?Gibt es eine Konfigurationsdatei für Visual Studio Add-In?

Antwort

7

ConfigurationManager.AppSettings ruft die Konfigurationsdatei für die AppDomain ab, in die Sie geladen werden. Diese Konfigurationsdatei ist normalerweise die Datei, die der ausführbaren Einstiegspunktdatei zugeordnet ist. In Ihrem Fall steuern Sie weder die ausführbare Einsprungpunktdatei noch die von Ihnen ausgeführte Anwendungsdomäne, sodass Sie ConfigurationManager.AppSettings nicht verwenden können.

Sie Frage im Grunde läuft auf "Wie kann ich eine Konfigurationsdatei mit einer DLL?" (C# Dll config file). Sie müssen zwei Dinge tun:

  1. Fügen Sie ein Anwendungskonfigurationsdateielement zu Ihrem Projekt hinzu und stellen Sie sicher, dass Sie es im selben Ordner wie Ihre DLL bereitstellen.
  2. Zugriff auf die Konfigurationsdatei aus der DLL wie folgt unter Verwendung von Code:

    string pluginAssemblyPath = Assembly.GetExecutingAssembly().Location; 
    Configuration configuration = ConfigurationManager.OpenExeConfiguration(pluginAssemblyPath); 
    string someValue = configuration.AppSettings.Settings["SomeKey"].Value; 
    

, die definitiv für reguläre DLLs arbeiten, die nicht Schattenkopie geladen verwenden. Ich bin mir nicht sicher, wie VS seine Plugins lädt. Wenn Sie auf Probleme stoßen, lassen Sie es mich wissen und ich kann eine Arbeit für DLLs veröffentlichen, die per Schattenkopie geladen werden.