Chciałbym użyć PowerShell jako część naszego automatycznego procesu kompilacji, aby zaktualizować plik App.config podczas wdrażania w naszym środowisku testowym. Jak mogę to zrobić?Jak odczytać/zapisać ustawienia App.config w PowerShell?
Odpowiedz
Biorąc pod uwagę to próbka App.config: C: \ Sample \ app.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="dbConnectionString"
connectionString="Data Source=(local);Initial Catalog=Northwind;Integrated Security=True"/>
</connectionStrings>
</configuration>
Poniższy skrypt C: \ Sample \ Script.ps1 będzie odczytywać i zapisywać ustawienia:
# get the directory of this script file
$currentDirectory = [IO.Path]::GetDirectoryName($MyInvocation.MyCommand.Path)
# get the full path and file name of the App.config file in the same directory as this script
$appConfigFile = [IO.Path]::Combine($currentDirectory, 'App.config')
# initialize the xml object
$appConfig = New-Object XML
# load the config file as an xml object
$appConfig.Load($appConfigFile)
# iterate over the settings
foreach($connectionString in $appConfig.configuration.connectionStrings.add)
{
# write the name to the console
'name: ' + $connectionString.name
# write the connection string to the console
'connectionString: ' + $connectionString.connectionString
# change the connection string
$connectionString.connectionString = 'Data Source=(local);Initial Catalog=MyDB;Integrated Security=True'
}
# save the updated config file
$appConfig.Save($appConfigFile)
Wykonaj skrypt:
PS C:\Sample> .\Script.ps1
wyjściowa:
name: dbConnectionString
connectionString: Data Source=(local);Initial Catalog=Northwind;Integrated Security=True
Updated C: \ Sample \ App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<connectionStrings>
<add name="dbConnectionString"
connectionString="Data Source=(local);Initial Catalog=MyDB;Integrated Security=True" />
</connectionStrings>
</configuration>
Kod może być znacznie więcej krótszy (na podstawie app.config Robin):
$appConfig = [xml](cat D:\temp\App.config)
$appConfig.configuration.connectionStrings.add | foreach {
$_.connectionString = "your connection string"
}
$appConfig.Save("D:\temp\App.config")
Fajnie, dziękuję za cynk. Nie zdawałem sobie sprawy, że mogę użyć tej składni. – Robin
Jeśli dążymy do skrócenia, foreach należy zapisać jako%. –
- 1. ustawienia vs app.config
- 2. Ustawienia systemowe.net z app.config programowo w C#
- 3. Powershell Calling .NET Assembly, który używa App.config
- 4. Wymień app.config wartości węzła poz PowerShell
- 5. Dlaczego ustawienia aplikacji są tylko do odczytu w pliku app.config?
- 6. Ustawienia Inno Modyfikowanie pliku app.config po uruchomieniu pliku setup.exe
- 7. PowerShell - Obiekt IE, błąd wartości ustawienia
- 8. Jak używać cudzysłowów w app.config
- 9. Clickonce i app.config
- 10. Ucieczka & w app.config
- 11. App.config dla Xunit
- 12. Jak załadować ustawienia aplikacji do obiektu NHibernate.Cfg.Configuration?
- 13. globalizacja app.config
- 14. Jak utworzyć niestandardową sekcję konfiguracji w app.config?
- 15. Jak zachować ścieżkę pliku w app.config
- 16. Jak programowo modyfikować assemblyBinding w app.config?
- 17. Jak napisać ciąg URI w App.Config
- 18. Jak zaktualizować ustawienia aplikacji w aplikacji WPF?
- 19. App.Config kontra niestandardowy plik XML
- 20. plik app.config w aplikacji konsoli C#
- 21. Przebudowywanie app.config w visual studio?
- 22. .NET - czy App.Config może być osadzony?
- 23. Używanie app.config w .Net Core
- 24. Szyfruj ciąg połączenia w app.config
- 25. Jak zapisać ustawienia w gdb?
- 26. C# app.config in winform
- 27. Implementacja PowerShell PSProvider * w * PowerShell
- 28. Ustawienia niestandardowe Ustawienia
- 29. Nierozpoznany atrybut „configProtectionProvider” po szyfrowanie app.config
- 30. app.config w DAL i web.config w WebApplication
Bardzo przydatna odpowiedź dziękuję @ Robin – 101V