Pregunta

Alguien ha trabajado en cómo conseguir PowerShell para usar app.config los archivos?Tengo un par de .NET DLL que me gustaría usar en uno de mis guiones, pero esperan que sus propios config secciones para estar presente en app.config/web.config.

¿Fue útil?

Solución

Las referencias cruzadas con este hilo, que me ayudó con la misma pregunta:Subsónica, El Acceso A La Aplicación.Config Cadenas De Conexión que se hace Referencia DLL en el Script de Powershell

He añadido lo siguiente a mi script, antes de invocar la DLL que las necesidades de los parámetros de configuración, donde $configpath es la ubicación del archivo que desea cargar:

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

Ver este post para asegurar el archivo de configuración especificado se aplica a la ejecución de contexto.

Otros consejos

Supongo que la configuración tendría que ser en powershell.exe.config en el powershell de directorio, pero que parece ser una mala manera de hacer las cosas.

Usted puede utilizar ConfigurationManager.OpenMappedExeConfiguration para abrir un archivo de configuración basado en la ejecución de nombre de la DLL, en lugar de la aplicación (exe, pero esto, obviamente, requiere de cambios a los archivos Dll.

Intentando una nueva respuesta a una vieja pregunta.

Creo que la respuesta moderna sería:no hagas eso.PowerShell es un shell.La forma normal de pasar información entre las partes de la shell son las variables de shell.Para powershell, que quedaría así:

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

Si la configuración se espera que se hereda a través de los procesos de los límites de la convención es el uso de variables de entorno.Extiendo la presente a la configuración de la cruz C# / PowerShell límite.Un par de ejemplos:

$env:PATH
$env:PSModulePath

Si usted piensa que esto es un anti-patrón .NET es posible que desee reconsiderar.Esta es la norma para PAAS aplicaciones alojadas, y va a ser el nuevo valor predeterminado para ASP.NET se ejecuta en el servidor optimizado CLR (ASP.NET v5).

Ver https://github.com/JabbR/JabbRv2/blob/dev/src/JabbR/Startup.cs#L21
Nota:en el momento de escribir estoy con enlaces a .AddEnvironmentVariables()

He revisado esta pregunta un par de veces, incluso preguntando a mí mismo.Quería poner una estaca en el suelo para decir PowerShell cosas no funcionan bien con <appSettings>.La OMI es mucho mejor para abrazar el shell aspecto de PS sobre el .NET aspecto en este respecto.

Si necesita una configuración compleja de tomar una cadena JSON.POSH v3+ ha ConvertFrom-JSON built-in.Si todo en su proceso utiliza la misma configuración compleja de poner en un .archivo json y seleccione el archivo de una variable de entorno.

Si un solo archivo no es suficiente no están bien establecidos soluciones como el PATH patrón, GIT .gitignore la resolución, o ASP.NET web.config resolución (que no voy a repetir aquí).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top