Skip to content

Instantly share code, notes, and snippets.

@dcomartin dcomartin/Replacer.cs

Last active Jul 20, 2017
What would you like to do?
using System;
using System.Xml;
using Cake.Core;
using Cake.Core.Annotations;
using LogLevel = Cake.Core.Diagnostics.LogLevel;
using Verbosity = Cake.Core.Diagnostics.Verbosity;
namespace Cake.AppSettingsReplacer
public static class Replacer
public static void ReplaceAppSetting(this ICakeContext context, string filename, string key, string newValue)
var xml = new XmlDocument();
var node = xml.SelectSingleNode($"/configuration/appSettings/add[@key='{key}']");
if (node == null)
throw new InvalidOperationException($"ApplicationSetting Key ({key}) does not exist.");
var valueAttribute = node.Attributes["value"];
if (valueAttribute == null)
valueAttribute = xml.CreateAttribute("value");
valueAttribute.Value = newValue;
context?.Log.Write(Verbosity.Normal, LogLevel.Debug, $"Replacing {filename} appSetting key={key} with value={newValue}");
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.