Frage

Hat jemand herausgefunden, wie man PowerShell zu verwenden app.config Dateien?Ich habe ein paar .NET-DLL, die ich verwenden möchte, in eines meiner Skripte, aber Sie erwarten, dass Ihre eigene config-Abschnitte vorhanden sein, in app.config/web.config.

War es hilfreich?

Lösung

Cross-referencing, das mit diesem thread, die mir half, mich mit der gleichen Frage:Subsonic Zugang Zur App.Config-Verbindungszeichenfolgen Von Referenzierten DLL in Powershell-Skript

Ich habe Folgendes in mein Skript vor dem Aufruf der DLL, die den Bedürfnissen config-Einstellungen, wobei $configpath ist der Speicherort der Datei, die ich laden möchte:

[appdomain]::CurrentDomain.SetData("APP_CONFIG_FILE", $configpath)
Add-Type -AssemblyName System.Configuration

Finden diese post, um sicherzustellen, dass die Konfiguration Datei angegeben wird angewendet, um den Kontext.

Andere Tipps

Ich vermute, dass die Einstellungen werden in der powershell.exe.Konfiguration in der powershell-Verzeichnis, aber das scheint eine schlechte Art, Dinge zu tun.

Sie können den ConfigurationManager.OpenMappedExeConfiguration zum öffnen einer Konfigurationsdatei basiert auf der Ausführung von DLL-name, anstatt die Programm-exe, aber das würde natürlich erfordern änderungen der DLLs.

Sie versuchen, eine neue Antwort auf eine alte Frage.

Ich denke, die moderne Antwort wäre:tun Sie das nicht.PowerShell ist eine shell.Der normale Weg die übertragung von Informationen zwischen teilen der shell sind shell-Variablen.Für die powershell, die Aussehen würde:

$global:MyComponent_MySetting = '12'
# i.e. 
$PSDefaultParameterValues
$ErrorActionPreference

Wenn die Einstellungen dürfte sein, geerbt, der über Prozesse die Grenzen der Konvention ist die Verwendung von Umgebungsvariablen.Ich richte diese auf Einstellungen, cross C# / PowerShell Grenze.Ein paar Beispiele:

$env:PATH
$env:PSModulePath

Wenn Sie denken, dass dies ein anti-Muster .NETTO möchten Sie vielleicht zu überdenken.Dies ist die norm für PAAS-hosted-apps und ist der neue Standard für ASP.NET ausführen auf server optimierte CLR (ASP.NET v5).

Finden https://github.com/JabbR/JabbRv2/blob/dev/src/JabbR/Startup.cs#L21
Hinweis:zum Zeitpunkt des Schreibens bin ich verknüpfen .AddEnvironmentVariables()

Ich habe revisited dieser Frage ein paar mal und bittet Sie mich.Ich wollte ein Pfahl in den Boden zu sagen PowerShell-Zeug funktioniert nicht gut mit <appSettings>.IMO ist es viel besser, Sie zu umarmen, die shell Aspekt der PS über die .NET Aspekt in dieser Hinsicht.

Wenn Sie brauchen, komplexe Konfiguration, nehmen Sie sich einen JSON-string.POSH v3+ hat ConvertFrom-JSON gebaut-in.Wenn alles in Ihrem Prozess verwendet die gleiche komplexe Konfiguration legen Sie es in eine .json-Datei und zeigen Sie auf, dass die Datei aus einer Umgebungsvariablen.

Wenn eine einzelne Datei nicht genügen, es gibt gut etablierte Lösungen wie das PATH Muster, GIT .gitignore Auflösung, oder ASP.NET web.config Auflösung (die ich nicht wiederholen werde hier).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top