[{"data":1,"prerenderedAt":-1},["Reactive",2],{"content-/articles/general/msbuild-xdt-transform":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"_empty":6,"title":8,"description":9,"excerpt":10,"topic":21,"authors":22,"tags":26,"updatedAt":30,"createdAt":30,"body":31,"_type":1988,"_id":1989,"_source":1990,"_file":1991,"_extension":1992},"/articles/general/msbuild-xdt-transform","general",false,"","MSBuild XDT Transform","Transform a XML with the built-in XDT Transformation tool in MSBuild",{"type":11,"children":12},"root",[13],{"type":14,"tag":15,"props":16,"children":17},"element","p",{},[18],{"type":19,"value":20},"text","XML can be transformed into a new version by going through the XDT transformation library built-in with Visual Studio.","General",[23],{"name":24,"avatar":25},"Shaun Chong","levi.png",[27,28,29],"xml","msbuild","vs","2026-05-03T02:58:59.000Z",{"type":11,"children":32,"toc":1980},[33,37,44,49,184,189,302,307,312,318,323,565,601,618,624,636,672,717,1519,1548,1553,1606,1611,1630,1635,1654,1659,1732,1738,1743,1911,1917,1942,1948,1957,1963,1970,1975],{"type":14,"tag":15,"props":34,"children":35},{},[36],{"type":19,"value":20},{"type":14,"tag":38,"props":39,"children":41},"h2",{"id":40},"scenario",[42],{"type":19,"value":43},"Scenario",{"type":14,"tag":15,"props":45,"children":46},{},[47],{"type":19,"value":48},"Imagine we have a XML configuration file that looks like this.",{"type":14,"tag":50,"props":51,"children":56},"code",{"className":52,"code":54,"filename":55,"language":27,"meta":7},[53],"language-xml","\u003Cwebsite>\n  \u003Ctitle>My Website\u003C/title>\n  \u003Cenvironment>Development\u003C/environment>\n  \u003Curl>http://localhost:8080\u003C/url>\n\u003C/website>\n","dev.config.xml",[57],{"type":14,"tag":58,"props":59,"children":60},"pre",{},[61],{"type":14,"tag":50,"props":62,"children":63},{"__ignoreMap":7},[64,87,114,140,166],{"type":14,"tag":65,"props":66,"children":69},"span",{"class":67,"line":68},"line",1,[70,76,82],{"type":14,"tag":65,"props":71,"children":73},{"class":72},"ct-947867",[74],{"type":19,"value":75},"\u003C",{"type":14,"tag":65,"props":77,"children":79},{"class":78},"ct-241623",[80],{"type":19,"value":81},"website",{"type":14,"tag":65,"props":83,"children":84},{"class":72},[85],{"type":19,"value":86},">\n",{"type":14,"tag":65,"props":88,"children":90},{"class":67,"line":89},2,[91,96,101,106,110],{"type":14,"tag":65,"props":92,"children":93},{"class":72},[94],{"type":19,"value":95},"  \u003C",{"type":14,"tag":65,"props":97,"children":98},{"class":78},[99],{"type":19,"value":100},"title",{"type":14,"tag":65,"props":102,"children":103},{"class":72},[104],{"type":19,"value":105},">My Website\u003C/",{"type":14,"tag":65,"props":107,"children":108},{"class":78},[109],{"type":19,"value":100},{"type":14,"tag":65,"props":111,"children":112},{"class":72},[113],{"type":19,"value":86},{"type":14,"tag":65,"props":115,"children":117},{"class":67,"line":116},3,[118,122,127,132,136],{"type":14,"tag":65,"props":119,"children":120},{"class":72},[121],{"type":19,"value":95},{"type":14,"tag":65,"props":123,"children":124},{"class":78},[125],{"type":19,"value":126},"environment",{"type":14,"tag":65,"props":128,"children":129},{"class":72},[130],{"type":19,"value":131},">Development\u003C/",{"type":14,"tag":65,"props":133,"children":134},{"class":78},[135],{"type":19,"value":126},{"type":14,"tag":65,"props":137,"children":138},{"class":72},[139],{"type":19,"value":86},{"type":14,"tag":65,"props":141,"children":143},{"class":67,"line":142},4,[144,148,153,158,162],{"type":14,"tag":65,"props":145,"children":146},{"class":72},[147],{"type":19,"value":95},{"type":14,"tag":65,"props":149,"children":150},{"class":78},[151],{"type":19,"value":152},"url",{"type":14,"tag":65,"props":154,"children":155},{"class":72},[156],{"type":19,"value":157},">http://localhost:8080\u003C/",{"type":14,"tag":65,"props":159,"children":160},{"class":78},[161],{"type":19,"value":152},{"type":14,"tag":65,"props":163,"children":164},{"class":72},[165],{"type":19,"value":86},{"type":14,"tag":65,"props":167,"children":169},{"class":67,"line":168},5,[170,175,179],{"type":14,"tag":65,"props":171,"children":172},{"class":72},[173],{"type":19,"value":174},"\u003C/",{"type":14,"tag":65,"props":176,"children":177},{"class":78},[178],{"type":19,"value":81},{"type":14,"tag":65,"props":180,"children":181},{"class":72},[182],{"type":19,"value":183},">",{"type":14,"tag":15,"props":185,"children":186},{},[187],{"type":19,"value":188},"The configuration are only for local/development environment. To cater for the production environment, we can just copy and paste the configuration and just change the relevant properties to the environment.",{"type":14,"tag":50,"props":190,"children":194},{"className":191,"code":192,"filename":193,"language":27,"meta":7},[53],"\u003Cwebsite>\n  \u003Ctitle>My Website\u003C/title>\n  \u003Cenvironment>Production\u003C/environment>\n  \u003Curl>https://www.mysite.com\u003C/url>\n\u003C/website>\n","prod.config.xml",[195],{"type":14,"tag":58,"props":196,"children":197},{},[198],{"type":14,"tag":50,"props":199,"children":200},{"__ignoreMap":7},[201,216,239,263,287],{"type":14,"tag":65,"props":202,"children":203},{"class":67,"line":68},[204,208,212],{"type":14,"tag":65,"props":205,"children":206},{"class":72},[207],{"type":19,"value":75},{"type":14,"tag":65,"props":209,"children":210},{"class":78},[211],{"type":19,"value":81},{"type":14,"tag":65,"props":213,"children":214},{"class":72},[215],{"type":19,"value":86},{"type":14,"tag":65,"props":217,"children":218},{"class":67,"line":89},[219,223,227,231,235],{"type":14,"tag":65,"props":220,"children":221},{"class":72},[222],{"type":19,"value":95},{"type":14,"tag":65,"props":224,"children":225},{"class":78},[226],{"type":19,"value":100},{"type":14,"tag":65,"props":228,"children":229},{"class":72},[230],{"type":19,"value":105},{"type":14,"tag":65,"props":232,"children":233},{"class":78},[234],{"type":19,"value":100},{"type":14,"tag":65,"props":236,"children":237},{"class":72},[238],{"type":19,"value":86},{"type":14,"tag":65,"props":240,"children":241},{"class":67,"line":116},[242,246,250,255,259],{"type":14,"tag":65,"props":243,"children":244},{"class":72},[245],{"type":19,"value":95},{"type":14,"tag":65,"props":247,"children":248},{"class":78},[249],{"type":19,"value":126},{"type":14,"tag":65,"props":251,"children":252},{"class":72},[253],{"type":19,"value":254},">Production\u003C/",{"type":14,"tag":65,"props":256,"children":257},{"class":78},[258],{"type":19,"value":126},{"type":14,"tag":65,"props":260,"children":261},{"class":72},[262],{"type":19,"value":86},{"type":14,"tag":65,"props":264,"children":265},{"class":67,"line":142},[266,270,274,279,283],{"type":14,"tag":65,"props":267,"children":268},{"class":72},[269],{"type":19,"value":95},{"type":14,"tag":65,"props":271,"children":272},{"class":78},[273],{"type":19,"value":152},{"type":14,"tag":65,"props":275,"children":276},{"class":72},[277],{"type":19,"value":278},">https://www.mysite.com\u003C/",{"type":14,"tag":65,"props":280,"children":281},{"class":78},[282],{"type":19,"value":152},{"type":14,"tag":65,"props":284,"children":285},{"class":72},[286],{"type":19,"value":86},{"type":14,"tag":65,"props":288,"children":289},{"class":67,"line":168},[290,294,298],{"type":14,"tag":65,"props":291,"children":292},{"class":72},[293],{"type":19,"value":174},{"type":14,"tag":65,"props":295,"children":296},{"class":78},[297],{"type":19,"value":81},{"type":14,"tag":65,"props":299,"children":300},{"class":72},[301],{"type":19,"value":183},{"type":14,"tag":15,"props":303,"children":304},{},[305],{"type":19,"value":306},"That is fine for minimal configurations. What if we have 1000 lines of configurations? The copy and paste approach becomes error-prone and difficult to maintain. It also creates redundancy as not all of the properties need to be changed as some are reused and shared across different environments.",{"type":14,"tag":15,"props":308,"children":309},{},[310],{"type":19,"value":311},"Hence, what we can do is to extend the base XML file with XDT transform instead of copy pasta.",{"type":14,"tag":38,"props":313,"children":315},{"id":314},"syntax-introduction",[316],{"type":19,"value":317},"Syntax Introduction",{"type":14,"tag":15,"props":319,"children":320},{},[321],{"type":19,"value":322},"This is how a XDT transformation looks like. It is still an XML file.",{"type":14,"tag":50,"props":324,"children":327},{"className":325,"code":326,"filename":193,"language":27,"meta":7},[53],"\u003C?xml version=\"1.0\" encoding=\"utf-8\" ?>\n\u003Cwebsite xmlns:xdt=\"http://schemas.microsoft.com/XML-Document-Transform\">\n  \u003Cenvironment\n    xdt:Locator=\"XPath(//website/environment)\"\n    xdt:Transform=\"Replace\">Production\u003C/environment>\n  \u003Curl\n    xdt:Locator=\"XPath(//website/url)\"\n    xdt:Transform=\"Replace\">https://www.mysite.com\u003C/url>\n\u003C/website>\n",[328],{"type":14,"tag":58,"props":329,"children":330},{},[331],{"type":14,"tag":50,"props":332,"children":333},{"__ignoreMap":7},[334,382,416,428,450,483,496,517,549],{"type":14,"tag":65,"props":335,"children":336},{"class":67,"line":68},[337,342,346,352,357,363,368,372,377],{"type":14,"tag":65,"props":338,"children":339},{"class":72},[340],{"type":19,"value":341},"\u003C?",{"type":14,"tag":65,"props":343,"children":344},{"class":78},[345],{"type":19,"value":27},{"type":14,"tag":65,"props":347,"children":349},{"class":348},"ct-642681",[350],{"type":19,"value":351}," version",{"type":14,"tag":65,"props":353,"children":354},{"class":72},[355],{"type":19,"value":356},"=",{"type":14,"tag":65,"props":358,"children":360},{"class":359},"ct-094461",[361],{"type":19,"value":362},"\"1.0\"",{"type":14,"tag":65,"props":364,"children":365},{"class":348},[366],{"type":19,"value":367}," encoding",{"type":14,"tag":65,"props":369,"children":370},{"class":72},[371],{"type":19,"value":356},{"type":14,"tag":65,"props":373,"children":374},{"class":359},[375],{"type":19,"value":376},"\"utf-8\"",{"type":14,"tag":65,"props":378,"children":379},{"class":72},[380],{"type":19,"value":381}," ?>\n",{"type":14,"tag":65,"props":383,"children":384},{"class":67,"line":89},[385,389,393,398,403,407,412],{"type":14,"tag":65,"props":386,"children":387},{"class":72},[388],{"type":19,"value":75},{"type":14,"tag":65,"props":390,"children":391},{"class":78},[392],{"type":19,"value":81},{"type":14,"tag":65,"props":394,"children":395},{"class":72},[396],{"type":19,"value":397}," ",{"type":14,"tag":65,"props":399,"children":400},{"class":348},[401],{"type":19,"value":402},"xmlns:xdt",{"type":14,"tag":65,"props":404,"children":405},{"class":72},[406],{"type":19,"value":356},{"type":14,"tag":65,"props":408,"children":409},{"class":359},[410],{"type":19,"value":411},"\"http://schemas.microsoft.com/XML-Document-Transform\"",{"type":14,"tag":65,"props":413,"children":414},{"class":72},[415],{"type":19,"value":86},{"type":14,"tag":65,"props":417,"children":418},{"class":67,"line":116},[419,423],{"type":14,"tag":65,"props":420,"children":421},{"class":72},[422],{"type":19,"value":95},{"type":14,"tag":65,"props":424,"children":425},{"class":78},[426],{"type":19,"value":427},"environment\n",{"type":14,"tag":65,"props":429,"children":430},{"class":67,"line":142},[431,436,441,445],{"type":14,"tag":65,"props":432,"children":433},{"class":72},[434],{"type":19,"value":435},"    ",{"type":14,"tag":65,"props":437,"children":438},{"class":348},[439],{"type":19,"value":440},"xdt:Locator",{"type":14,"tag":65,"props":442,"children":443},{"class":72},[444],{"type":19,"value":356},{"type":14,"tag":65,"props":446,"children":447},{"class":359},[448],{"type":19,"value":449},"\"XPath(//website/environment)\"\n",{"type":14,"tag":65,"props":451,"children":452},{"class":67,"line":168},[453,457,462,466,471,475,479],{"type":14,"tag":65,"props":454,"children":455},{"class":72},[456],{"type":19,"value":435},{"type":14,"tag":65,"props":458,"children":459},{"class":348},[460],{"type":19,"value":461},"xdt:Transform",{"type":14,"tag":65,"props":463,"children":464},{"class":72},[465],{"type":19,"value":356},{"type":14,"tag":65,"props":467,"children":468},{"class":359},[469],{"type":19,"value":470},"\"Replace\"",{"type":14,"tag":65,"props":472,"children":473},{"class":72},[474],{"type":19,"value":254},{"type":14,"tag":65,"props":476,"children":477},{"class":78},[478],{"type":19,"value":126},{"type":14,"tag":65,"props":480,"children":481},{"class":72},[482],{"type":19,"value":86},{"type":14,"tag":65,"props":484,"children":486},{"class":67,"line":485},6,[487,491],{"type":14,"tag":65,"props":488,"children":489},{"class":72},[490],{"type":19,"value":95},{"type":14,"tag":65,"props":492,"children":493},{"class":78},[494],{"type":19,"value":495},"url\n",{"type":14,"tag":65,"props":497,"children":499},{"class":67,"line":498},7,[500,504,508,512],{"type":14,"tag":65,"props":501,"children":502},{"class":72},[503],{"type":19,"value":435},{"type":14,"tag":65,"props":505,"children":506},{"class":348},[507],{"type":19,"value":440},{"type":14,"tag":65,"props":509,"children":510},{"class":72},[511],{"type":19,"value":356},{"type":14,"tag":65,"props":513,"children":514},{"class":359},[515],{"type":19,"value":516},"\"XPath(//website/url)\"\n",{"type":14,"tag":65,"props":518,"children":520},{"class":67,"line":519},8,[521,525,529,533,537,541,545],{"type":14,"tag":65,"props":522,"children":523},{"class":72},[524],{"type":19,"value":435},{"type":14,"tag":65,"props":526,"children":527},{"class":348},[528],{"type":19,"value":461},{"type":14,"tag":65,"props":530,"children":531},{"class":72},[532],{"type":19,"value":356},{"type":14,"tag":65,"props":534,"children":535},{"class":359},[536],{"type":19,"value":470},{"type":14,"tag":65,"props":538,"children":539},{"class":72},[540],{"type":19,"value":278},{"type":14,"tag":65,"props":542,"children":543},{"class":78},[544],{"type":19,"value":152},{"type":14,"tag":65,"props":546,"children":547},{"class":72},[548],{"type":19,"value":86},{"type":14,"tag":65,"props":550,"children":552},{"class":67,"line":551},9,[553,557,561],{"type":14,"tag":65,"props":554,"children":555},{"class":72},[556],{"type":19,"value":174},{"type":14,"tag":65,"props":558,"children":559},{"class":78},[560],{"type":19,"value":81},{"type":14,"tag":65,"props":562,"children":563},{"class":72},[564],{"type":19,"value":183},{"type":14,"tag":15,"props":566,"children":567},{},[568,570,575,577,581,583,587,589,593,595,599],{"type":19,"value":569},"Here, we ignore the ",{"type":14,"tag":571,"props":572,"children":573},"code-inline",{},[574],{"type":19,"value":100},{"type":19,"value":576}," because it is the same for all environment output and only transform the ",{"type":14,"tag":571,"props":578,"children":579},{},[580],{"type":19,"value":126},{"type":19,"value":582}," and ",{"type":14,"tag":571,"props":584,"children":585},{},[586],{"type":19,"value":152},{"type":19,"value":588},". The ",{"type":14,"tag":571,"props":590,"children":591},{},[592],{"type":19,"value":440},{"type":19,"value":594}," indicates \"Where is the original element\" and ",{"type":14,"tag":571,"props":596,"children":597},{},[598],{"type":19,"value":461},{"type":19,"value":600}," declares \"How to manipulate it\". These are the fundamental operators that the XDT transformation offers.",{"type":14,"tag":15,"props":602,"children":603},{},[604,606,610,612,616],{"type":19,"value":605},"The idea is, this ",{"type":14,"tag":571,"props":607,"children":608},{},[609],{"type":19,"value":193},{"type":19,"value":611}," will be processed by the XDT Transformation against the ",{"type":14,"tag":571,"props":613,"children":614},{},[615],{"type":19,"value":55},{"type":19,"value":617}," and produce a fully structured counterpart just like a copy-paste would produce. The following step shows how to set up the transformation process.",{"type":14,"tag":38,"props":619,"children":621},{"id":620},"project-setup",[622],{"type":19,"value":623},"Project Setup",{"type":14,"tag":15,"props":625,"children":626},{},[627,629,634],{"type":19,"value":628},"First, create an empty Console project named ",{"type":14,"tag":571,"props":630,"children":631},{},[632],{"type":19,"value":633},"MyXmlTransforms",{"type":19,"value":635}," in Visual Studio. This is how the file tree should look like.",{"type":14,"tag":50,"props":637,"children":641},{"className":638,"code":640},[639],"language-undefined","MyXmlTransforms/\n├── MyXmlTransforms.csproj\n└── Program.cs\n",[642],{"type":14,"tag":58,"props":643,"children":644},{},[645],{"type":14,"tag":50,"props":646,"children":647},{"__ignoreMap":7},[648,656,664],{"type":14,"tag":65,"props":649,"children":650},{"class":67,"line":68},[651],{"type":14,"tag":65,"props":652,"children":653},{},[654],{"type":19,"value":655},"MyXmlTransforms/\n",{"type":14,"tag":65,"props":657,"children":658},{"class":67,"line":89},[659],{"type":14,"tag":65,"props":660,"children":661},{},[662],{"type":19,"value":663},"├── MyXmlTransforms.csproj\n",{"type":14,"tag":65,"props":665,"children":666},{"class":67,"line":116},[667],{"type":14,"tag":65,"props":668,"children":669},{},[670],{"type":19,"value":671},"└── Program.cs",{"type":14,"tag":15,"props":673,"children":674},{},[675,677,682,684,689,691,695,697,702,704,708,710,715],{"type":19,"value":676},"After that, remove the ",{"type":14,"tag":571,"props":678,"children":679},{},[680],{"type":19,"value":681},"Program.cs",{"type":19,"value":683}," file and create a folder called ",{"type":14,"tag":571,"props":685,"children":686},{},[687],{"type":19,"value":688},"Base",{"type":19,"value":690}," and put the ",{"type":14,"tag":571,"props":692,"children":693},{},[694],{"type":19,"value":55},{"type":19,"value":696}," inside as well as a folder ",{"type":14,"tag":571,"props":698,"children":699},{},[700],{"type":19,"value":701},"Prod",{"type":19,"value":703}," and put ",{"type":14,"tag":571,"props":705,"children":706},{},[707],{"type":19,"value":193},{"type":19,"value":709}," inside. After that update the ",{"type":14,"tag":571,"props":711,"children":712},{},[713],{"type":19,"value":714},"MyXmlTransforms.csproj",{"type":19,"value":716}," file to the following.",{"type":14,"tag":50,"props":718,"children":721},{"className":719,"code":720,"filename":714,"language":27,"meta":7},[53],"\u003CProject Sdk=\"Microsoft.NET.Sdk\" DefaultTargets=\"Transform\">\n    \u003CPropertyGroup>\n        \u003COutputType>Library\u003C/OutputType>\n        \u003CTargetFramework>net10.0\u003C/TargetFramework>\n        \u003CImplicitUsings>enable\u003C/ImplicitUsings>\n        \u003CNullable>enable\u003C/Nullable>\n    \u003C/PropertyGroup>\n\n    \u003CPropertyGroup>\n        \u003CXdtDll>$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\Web\\Microsoft.Web.Publishing.Tasks.dll\u003C/XdtDll>\n        \u003COutputDir>$(MSBuildThisFileDirectory)bin\\Output\\\u003C/OutputDir>\n    \u003C/PropertyGroup>\n\n    \u003CUsingTask TaskName=\"TransformXml\" AssemblyFile=\"$(XdtDll)\" />\n\n    \u003CItemGroup>\n        \u003C!-- Add more pairs here as needed -->\n        \u003CXmlTransform Include=\"Config\">\n            \u003CSource>Base\\dev.config.xml\u003C/Source>\n            \u003CTransform>Prod\\prod.config.xml\u003C/Transform>\n            \u003CDestination>$(OutputDir)prod.config.xml\u003C/Destination>\n        \u003C/XmlTransform>\n    \u003C/ItemGroup>\n\n    \u003CTarget Name=\"Transform\" BeforeTargets=\"Build\">\n        \u003CMakeDir Directories=\"$(OutputDir)\" />\n        \u003CTransformXml Source=\"%(XmlTransform.Source)\" Transform=\"%(XmlTransform.Transform)\" Destination=\"%(XmlTransform.Destination)\" StackTrace=\"true\" />\n        \u003CMessage Text=\"Transformed → %(XmlTransform.Destination)\" Importance=\"high\" />\n    \u003C/Target>\n\u003C/Project>\n",[722],{"type":14,"tag":58,"props":723,"children":724},{},[725],{"type":14,"tag":50,"props":726,"children":727},{"__ignoreMap":7},[728,780,797,823,848,873,897,913,921,936,962,988,1004,1012,1066,1074,1091,1106,1141,1168,1194,1220,1237,1253,1261,1313,1348,1434,1487,1503],{"type":14,"tag":65,"props":729,"children":730},{"class":67,"line":68},[731,735,740,744,749,753,758,762,767,771,776],{"type":14,"tag":65,"props":732,"children":733},{"class":72},[734],{"type":19,"value":75},{"type":14,"tag":65,"props":736,"children":737},{"class":78},[738],{"type":19,"value":739},"Project",{"type":14,"tag":65,"props":741,"children":742},{"class":72},[743],{"type":19,"value":397},{"type":14,"tag":65,"props":745,"children":746},{"class":348},[747],{"type":19,"value":748},"Sdk",{"type":14,"tag":65,"props":750,"children":751},{"class":72},[752],{"type":19,"value":356},{"type":14,"tag":65,"props":754,"children":755},{"class":359},[756],{"type":19,"value":757},"\"Microsoft.NET.Sdk\"",{"type":14,"tag":65,"props":759,"children":760},{"class":72},[761],{"type":19,"value":397},{"type":14,"tag":65,"props":763,"children":764},{"class":348},[765],{"type":19,"value":766},"DefaultTargets",{"type":14,"tag":65,"props":768,"children":769},{"class":72},[770],{"type":19,"value":356},{"type":14,"tag":65,"props":772,"children":773},{"class":359},[774],{"type":19,"value":775},"\"Transform\"",{"type":14,"tag":65,"props":777,"children":778},{"class":72},[779],{"type":19,"value":86},{"type":14,"tag":65,"props":781,"children":782},{"class":67,"line":89},[783,788,793],{"type":14,"tag":65,"props":784,"children":785},{"class":72},[786],{"type":19,"value":787},"    \u003C",{"type":14,"tag":65,"props":789,"children":790},{"class":78},[791],{"type":19,"value":792},"PropertyGroup",{"type":14,"tag":65,"props":794,"children":795},{"class":72},[796],{"type":19,"value":86},{"type":14,"tag":65,"props":798,"children":799},{"class":67,"line":116},[800,805,810,815,819],{"type":14,"tag":65,"props":801,"children":802},{"class":72},[803],{"type":19,"value":804},"        \u003C",{"type":14,"tag":65,"props":806,"children":807},{"class":78},[808],{"type":19,"value":809},"OutputType",{"type":14,"tag":65,"props":811,"children":812},{"class":72},[813],{"type":19,"value":814},">Library\u003C/",{"type":14,"tag":65,"props":816,"children":817},{"class":78},[818],{"type":19,"value":809},{"type":14,"tag":65,"props":820,"children":821},{"class":72},[822],{"type":19,"value":86},{"type":14,"tag":65,"props":824,"children":825},{"class":67,"line":142},[826,830,835,840,844],{"type":14,"tag":65,"props":827,"children":828},{"class":72},[829],{"type":19,"value":804},{"type":14,"tag":65,"props":831,"children":832},{"class":78},[833],{"type":19,"value":834},"TargetFramework",{"type":14,"tag":65,"props":836,"children":837},{"class":72},[838],{"type":19,"value":839},">net10.0\u003C/",{"type":14,"tag":65,"props":841,"children":842},{"class":78},[843],{"type":19,"value":834},{"type":14,"tag":65,"props":845,"children":846},{"class":72},[847],{"type":19,"value":86},{"type":14,"tag":65,"props":849,"children":850},{"class":67,"line":168},[851,855,860,865,869],{"type":14,"tag":65,"props":852,"children":853},{"class":72},[854],{"type":19,"value":804},{"type":14,"tag":65,"props":856,"children":857},{"class":78},[858],{"type":19,"value":859},"ImplicitUsings",{"type":14,"tag":65,"props":861,"children":862},{"class":72},[863],{"type":19,"value":864},">enable\u003C/",{"type":14,"tag":65,"props":866,"children":867},{"class":78},[868],{"type":19,"value":859},{"type":14,"tag":65,"props":870,"children":871},{"class":72},[872],{"type":19,"value":86},{"type":14,"tag":65,"props":874,"children":875},{"class":67,"line":485},[876,880,885,889,893],{"type":14,"tag":65,"props":877,"children":878},{"class":72},[879],{"type":19,"value":804},{"type":14,"tag":65,"props":881,"children":882},{"class":78},[883],{"type":19,"value":884},"Nullable",{"type":14,"tag":65,"props":886,"children":887},{"class":72},[888],{"type":19,"value":864},{"type":14,"tag":65,"props":890,"children":891},{"class":78},[892],{"type":19,"value":884},{"type":14,"tag":65,"props":894,"children":895},{"class":72},[896],{"type":19,"value":86},{"type":14,"tag":65,"props":898,"children":899},{"class":67,"line":498},[900,905,909],{"type":14,"tag":65,"props":901,"children":902},{"class":72},[903],{"type":19,"value":904},"    \u003C/",{"type":14,"tag":65,"props":906,"children":907},{"class":78},[908],{"type":19,"value":792},{"type":14,"tag":65,"props":910,"children":911},{"class":72},[912],{"type":19,"value":86},{"type":14,"tag":65,"props":914,"children":915},{"class":67,"line":519},[916],{"type":14,"tag":65,"props":917,"children":918},{},[919],{"type":19,"value":920},"\n",{"type":14,"tag":65,"props":922,"children":923},{"class":67,"line":551},[924,928,932],{"type":14,"tag":65,"props":925,"children":926},{"class":72},[927],{"type":19,"value":787},{"type":14,"tag":65,"props":929,"children":930},{"class":78},[931],{"type":19,"value":792},{"type":14,"tag":65,"props":933,"children":934},{"class":72},[935],{"type":19,"value":86},{"type":14,"tag":65,"props":937,"children":939},{"class":67,"line":938},10,[940,944,949,954,958],{"type":14,"tag":65,"props":941,"children":942},{"class":72},[943],{"type":19,"value":804},{"type":14,"tag":65,"props":945,"children":946},{"class":78},[947],{"type":19,"value":948},"XdtDll",{"type":14,"tag":65,"props":950,"children":951},{"class":72},[952],{"type":19,"value":953},">$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\v$(VisualStudioVersion)\\Web\\Microsoft.Web.Publishing.Tasks.dll\u003C/",{"type":14,"tag":65,"props":955,"children":956},{"class":78},[957],{"type":19,"value":948},{"type":14,"tag":65,"props":959,"children":960},{"class":72},[961],{"type":19,"value":86},{"type":14,"tag":65,"props":963,"children":965},{"class":67,"line":964},11,[966,970,975,980,984],{"type":14,"tag":65,"props":967,"children":968},{"class":72},[969],{"type":19,"value":804},{"type":14,"tag":65,"props":971,"children":972},{"class":78},[973],{"type":19,"value":974},"OutputDir",{"type":14,"tag":65,"props":976,"children":977},{"class":72},[978],{"type":19,"value":979},">$(MSBuildThisFileDirectory)bin\\Output\\\u003C/",{"type":14,"tag":65,"props":981,"children":982},{"class":78},[983],{"type":19,"value":974},{"type":14,"tag":65,"props":985,"children":986},{"class":72},[987],{"type":19,"value":86},{"type":14,"tag":65,"props":989,"children":991},{"class":67,"line":990},12,[992,996,1000],{"type":14,"tag":65,"props":993,"children":994},{"class":72},[995],{"type":19,"value":904},{"type":14,"tag":65,"props":997,"children":998},{"class":78},[999],{"type":19,"value":792},{"type":14,"tag":65,"props":1001,"children":1002},{"class":72},[1003],{"type":19,"value":86},{"type":14,"tag":65,"props":1005,"children":1007},{"class":67,"line":1006},13,[1008],{"type":14,"tag":65,"props":1009,"children":1010},{},[1011],{"type":19,"value":920},{"type":14,"tag":65,"props":1013,"children":1015},{"class":67,"line":1014},14,[1016,1020,1025,1029,1034,1038,1043,1047,1052,1056,1061],{"type":14,"tag":65,"props":1017,"children":1018},{"class":72},[1019],{"type":19,"value":787},{"type":14,"tag":65,"props":1021,"children":1022},{"class":78},[1023],{"type":19,"value":1024},"UsingTask",{"type":14,"tag":65,"props":1026,"children":1027},{"class":72},[1028],{"type":19,"value":397},{"type":14,"tag":65,"props":1030,"children":1031},{"class":348},[1032],{"type":19,"value":1033},"TaskName",{"type":14,"tag":65,"props":1035,"children":1036},{"class":72},[1037],{"type":19,"value":356},{"type":14,"tag":65,"props":1039,"children":1040},{"class":359},[1041],{"type":19,"value":1042},"\"TransformXml\"",{"type":14,"tag":65,"props":1044,"children":1045},{"class":72},[1046],{"type":19,"value":397},{"type":14,"tag":65,"props":1048,"children":1049},{"class":348},[1050],{"type":19,"value":1051},"AssemblyFile",{"type":14,"tag":65,"props":1053,"children":1054},{"class":72},[1055],{"type":19,"value":356},{"type":14,"tag":65,"props":1057,"children":1058},{"class":359},[1059],{"type":19,"value":1060},"\"$(XdtDll)\"",{"type":14,"tag":65,"props":1062,"children":1063},{"class":72},[1064],{"type":19,"value":1065}," />\n",{"type":14,"tag":65,"props":1067,"children":1069},{"class":67,"line":1068},15,[1070],{"type":14,"tag":65,"props":1071,"children":1072},{},[1073],{"type":19,"value":920},{"type":14,"tag":65,"props":1075,"children":1077},{"class":67,"line":1076},16,[1078,1082,1087],{"type":14,"tag":65,"props":1079,"children":1080},{"class":72},[1081],{"type":19,"value":787},{"type":14,"tag":65,"props":1083,"children":1084},{"class":78},[1085],{"type":19,"value":1086},"ItemGroup",{"type":14,"tag":65,"props":1088,"children":1089},{"class":72},[1090],{"type":19,"value":86},{"type":14,"tag":65,"props":1092,"children":1094},{"class":67,"line":1093},17,[1095,1100],{"type":14,"tag":65,"props":1096,"children":1097},{"class":72},[1098],{"type":19,"value":1099},"        ",{"type":14,"tag":65,"props":1101,"children":1103},{"class":1102},"ct-463487",[1104],{"type":19,"value":1105},"\u003C!-- Add more pairs here as needed -->\n",{"type":14,"tag":65,"props":1107,"children":1109},{"class":67,"line":1108},18,[1110,1114,1119,1123,1128,1132,1137],{"type":14,"tag":65,"props":1111,"children":1112},{"class":72},[1113],{"type":19,"value":804},{"type":14,"tag":65,"props":1115,"children":1116},{"class":78},[1117],{"type":19,"value":1118},"XmlTransform",{"type":14,"tag":65,"props":1120,"children":1121},{"class":72},[1122],{"type":19,"value":397},{"type":14,"tag":65,"props":1124,"children":1125},{"class":348},[1126],{"type":19,"value":1127},"Include",{"type":14,"tag":65,"props":1129,"children":1130},{"class":72},[1131],{"type":19,"value":356},{"type":14,"tag":65,"props":1133,"children":1134},{"class":359},[1135],{"type":19,"value":1136},"\"Config\"",{"type":14,"tag":65,"props":1138,"children":1139},{"class":72},[1140],{"type":19,"value":86},{"type":14,"tag":65,"props":1142,"children":1144},{"class":67,"line":1143},19,[1145,1150,1155,1160,1164],{"type":14,"tag":65,"props":1146,"children":1147},{"class":72},[1148],{"type":19,"value":1149},"            \u003C",{"type":14,"tag":65,"props":1151,"children":1152},{"class":78},[1153],{"type":19,"value":1154},"Source",{"type":14,"tag":65,"props":1156,"children":1157},{"class":72},[1158],{"type":19,"value":1159},">Base\\dev.config.xml\u003C/",{"type":14,"tag":65,"props":1161,"children":1162},{"class":78},[1163],{"type":19,"value":1154},{"type":14,"tag":65,"props":1165,"children":1166},{"class":72},[1167],{"type":19,"value":86},{"type":14,"tag":65,"props":1169,"children":1171},{"class":67,"line":1170},20,[1172,1176,1181,1186,1190],{"type":14,"tag":65,"props":1173,"children":1174},{"class":72},[1175],{"type":19,"value":1149},{"type":14,"tag":65,"props":1177,"children":1178},{"class":78},[1179],{"type":19,"value":1180},"Transform",{"type":14,"tag":65,"props":1182,"children":1183},{"class":72},[1184],{"type":19,"value":1185},">Prod\\prod.config.xml\u003C/",{"type":14,"tag":65,"props":1187,"children":1188},{"class":78},[1189],{"type":19,"value":1180},{"type":14,"tag":65,"props":1191,"children":1192},{"class":72},[1193],{"type":19,"value":86},{"type":14,"tag":65,"props":1195,"children":1197},{"class":67,"line":1196},21,[1198,1202,1207,1212,1216],{"type":14,"tag":65,"props":1199,"children":1200},{"class":72},[1201],{"type":19,"value":1149},{"type":14,"tag":65,"props":1203,"children":1204},{"class":78},[1205],{"type":19,"value":1206},"Destination",{"type":14,"tag":65,"props":1208,"children":1209},{"class":72},[1210],{"type":19,"value":1211},">$(OutputDir)prod.config.xml\u003C/",{"type":14,"tag":65,"props":1213,"children":1214},{"class":78},[1215],{"type":19,"value":1206},{"type":14,"tag":65,"props":1217,"children":1218},{"class":72},[1219],{"type":19,"value":86},{"type":14,"tag":65,"props":1221,"children":1223},{"class":67,"line":1222},22,[1224,1229,1233],{"type":14,"tag":65,"props":1225,"children":1226},{"class":72},[1227],{"type":19,"value":1228},"        \u003C/",{"type":14,"tag":65,"props":1230,"children":1231},{"class":78},[1232],{"type":19,"value":1118},{"type":14,"tag":65,"props":1234,"children":1235},{"class":72},[1236],{"type":19,"value":86},{"type":14,"tag":65,"props":1238,"children":1240},{"class":67,"line":1239},23,[1241,1245,1249],{"type":14,"tag":65,"props":1242,"children":1243},{"class":72},[1244],{"type":19,"value":904},{"type":14,"tag":65,"props":1246,"children":1247},{"class":78},[1248],{"type":19,"value":1086},{"type":14,"tag":65,"props":1250,"children":1251},{"class":72},[1252],{"type":19,"value":86},{"type":14,"tag":65,"props":1254,"children":1256},{"class":67,"line":1255},24,[1257],{"type":14,"tag":65,"props":1258,"children":1259},{},[1260],{"type":19,"value":920},{"type":14,"tag":65,"props":1262,"children":1264},{"class":67,"line":1263},25,[1265,1269,1274,1278,1283,1287,1291,1295,1300,1304,1309],{"type":14,"tag":65,"props":1266,"children":1267},{"class":72},[1268],{"type":19,"value":787},{"type":14,"tag":65,"props":1270,"children":1271},{"class":78},[1272],{"type":19,"value":1273},"Target",{"type":14,"tag":65,"props":1275,"children":1276},{"class":72},[1277],{"type":19,"value":397},{"type":14,"tag":65,"props":1279,"children":1280},{"class":348},[1281],{"type":19,"value":1282},"Name",{"type":14,"tag":65,"props":1284,"children":1285},{"class":72},[1286],{"type":19,"value":356},{"type":14,"tag":65,"props":1288,"children":1289},{"class":359},[1290],{"type":19,"value":775},{"type":14,"tag":65,"props":1292,"children":1293},{"class":72},[1294],{"type":19,"value":397},{"type":14,"tag":65,"props":1296,"children":1297},{"class":348},[1298],{"type":19,"value":1299},"BeforeTargets",{"type":14,"tag":65,"props":1301,"children":1302},{"class":72},[1303],{"type":19,"value":356},{"type":14,"tag":65,"props":1305,"children":1306},{"class":359},[1307],{"type":19,"value":1308},"\"Build\"",{"type":14,"tag":65,"props":1310,"children":1311},{"class":72},[1312],{"type":19,"value":86},{"type":14,"tag":65,"props":1314,"children":1316},{"class":67,"line":1315},26,[1317,1321,1326,1330,1335,1339,1344],{"type":14,"tag":65,"props":1318,"children":1319},{"class":72},[1320],{"type":19,"value":804},{"type":14,"tag":65,"props":1322,"children":1323},{"class":78},[1324],{"type":19,"value":1325},"MakeDir",{"type":14,"tag":65,"props":1327,"children":1328},{"class":72},[1329],{"type":19,"value":397},{"type":14,"tag":65,"props":1331,"children":1332},{"class":348},[1333],{"type":19,"value":1334},"Directories",{"type":14,"tag":65,"props":1336,"children":1337},{"class":72},[1338],{"type":19,"value":356},{"type":14,"tag":65,"props":1340,"children":1341},{"class":359},[1342],{"type":19,"value":1343},"\"$(OutputDir)\"",{"type":14,"tag":65,"props":1345,"children":1346},{"class":72},[1347],{"type":19,"value":1065},{"type":14,"tag":65,"props":1349,"children":1351},{"class":67,"line":1350},27,[1352,1356,1361,1365,1369,1373,1378,1382,1386,1390,1395,1399,1403,1407,1412,1416,1421,1425,1430],{"type":14,"tag":65,"props":1353,"children":1354},{"class":72},[1355],{"type":19,"value":804},{"type":14,"tag":65,"props":1357,"children":1358},{"class":78},[1359],{"type":19,"value":1360},"TransformXml",{"type":14,"tag":65,"props":1362,"children":1363},{"class":72},[1364],{"type":19,"value":397},{"type":14,"tag":65,"props":1366,"children":1367},{"class":348},[1368],{"type":19,"value":1154},{"type":14,"tag":65,"props":1370,"children":1371},{"class":72},[1372],{"type":19,"value":356},{"type":14,"tag":65,"props":1374,"children":1375},{"class":359},[1376],{"type":19,"value":1377},"\"%(XmlTransform.Source)\"",{"type":14,"tag":65,"props":1379,"children":1380},{"class":72},[1381],{"type":19,"value":397},{"type":14,"tag":65,"props":1383,"children":1384},{"class":348},[1385],{"type":19,"value":1180},{"type":14,"tag":65,"props":1387,"children":1388},{"class":72},[1389],{"type":19,"value":356},{"type":14,"tag":65,"props":1391,"children":1392},{"class":359},[1393],{"type":19,"value":1394},"\"%(XmlTransform.Transform)\"",{"type":14,"tag":65,"props":1396,"children":1397},{"class":72},[1398],{"type":19,"value":397},{"type":14,"tag":65,"props":1400,"children":1401},{"class":348},[1402],{"type":19,"value":1206},{"type":14,"tag":65,"props":1404,"children":1405},{"class":72},[1406],{"type":19,"value":356},{"type":14,"tag":65,"props":1408,"children":1409},{"class":359},[1410],{"type":19,"value":1411},"\"%(XmlTransform.Destination)\"",{"type":14,"tag":65,"props":1413,"children":1414},{"class":72},[1415],{"type":19,"value":397},{"type":14,"tag":65,"props":1417,"children":1418},{"class":348},[1419],{"type":19,"value":1420},"StackTrace",{"type":14,"tag":65,"props":1422,"children":1423},{"class":72},[1424],{"type":19,"value":356},{"type":14,"tag":65,"props":1426,"children":1427},{"class":359},[1428],{"type":19,"value":1429},"\"true\"",{"type":14,"tag":65,"props":1431,"children":1432},{"class":72},[1433],{"type":19,"value":1065},{"type":14,"tag":65,"props":1435,"children":1437},{"class":67,"line":1436},28,[1438,1442,1447,1451,1456,1460,1465,1469,1474,1478,1483],{"type":14,"tag":65,"props":1439,"children":1440},{"class":72},[1441],{"type":19,"value":804},{"type":14,"tag":65,"props":1443,"children":1444},{"class":78},[1445],{"type":19,"value":1446},"Message",{"type":14,"tag":65,"props":1448,"children":1449},{"class":72},[1450],{"type":19,"value":397},{"type":14,"tag":65,"props":1452,"children":1453},{"class":348},[1454],{"type":19,"value":1455},"Text",{"type":14,"tag":65,"props":1457,"children":1458},{"class":72},[1459],{"type":19,"value":356},{"type":14,"tag":65,"props":1461,"children":1462},{"class":359},[1463],{"type":19,"value":1464},"\"Transformed → %(XmlTransform.Destination)\"",{"type":14,"tag":65,"props":1466,"children":1467},{"class":72},[1468],{"type":19,"value":397},{"type":14,"tag":65,"props":1470,"children":1471},{"class":348},[1472],{"type":19,"value":1473},"Importance",{"type":14,"tag":65,"props":1475,"children":1476},{"class":72},[1477],{"type":19,"value":356},{"type":14,"tag":65,"props":1479,"children":1480},{"class":359},[1481],{"type":19,"value":1482},"\"high\"",{"type":14,"tag":65,"props":1484,"children":1485},{"class":72},[1486],{"type":19,"value":1065},{"type":14,"tag":65,"props":1488,"children":1490},{"class":67,"line":1489},29,[1491,1495,1499],{"type":14,"tag":65,"props":1492,"children":1493},{"class":72},[1494],{"type":19,"value":904},{"type":14,"tag":65,"props":1496,"children":1497},{"class":78},[1498],{"type":19,"value":1273},{"type":14,"tag":65,"props":1500,"children":1501},{"class":72},[1502],{"type":19,"value":86},{"type":14,"tag":65,"props":1504,"children":1506},{"class":67,"line":1505},30,[1507,1511,1515],{"type":14,"tag":65,"props":1508,"children":1509},{"class":72},[1510],{"type":19,"value":174},{"type":14,"tag":65,"props":1512,"children":1513},{"class":78},[1514],{"type":19,"value":739},{"type":14,"tag":65,"props":1516,"children":1517},{"class":72},[1518],{"type":19,"value":183},{"type":14,"tag":1520,"props":1521,"children":1522},"blockquote",{},[1523],{"type":14,"tag":15,"props":1524,"children":1525},{},[1526,1528,1533,1535,1539,1541,1546],{"type":19,"value":1527},"The ",{"type":14,"tag":571,"props":1529,"children":1530},{},[1531],{"type":19,"value":1532},"%(...)",{"type":19,"value":1534}," batching syntax means MSBuild runs ",{"type":14,"tag":571,"props":1536,"children":1537},{},[1538],{"type":19,"value":1360},{"type":19,"value":1540}," once per item automatically — no loops needed.\n",{"type":14,"tag":571,"props":1542,"children":1543},{},[1544],{"type":19,"value":1545},"StackTrace=\"true\"",{"type":19,"value":1547}," on the task gives detailed error output if a transform fails — useful while authoring.",{"type":14,"tag":15,"props":1549,"children":1550},{},[1551],{"type":19,"value":1552},"Tldr,",{"type":14,"tag":1554,"props":1555,"children":1556},"ul",{},[1557,1570,1595],{"type":14,"tag":1558,"props":1559,"children":1560},"li",{},[1561,1563,1568],{"type":19,"value":1562},"XDT transform powered by the built-in ",{"type":14,"tag":571,"props":1564,"children":1565},{},[1566],{"type":19,"value":1567},"Microsoft.Web.Publishing.Tasks.dll",{"type":19,"value":1569}," from Visual Studio",{"type":14,"tag":1558,"props":1571,"children":1572},{},[1573,1575,1580,1581,1586,1588,1593],{"type":19,"value":1574},"Declares a transformation pipeline that merges the ",{"type":14,"tag":571,"props":1576,"children":1577},{},[1578],{"type":19,"value":1579},"dev",{"type":19,"value":582},{"type":14,"tag":571,"props":1582,"children":1583},{},[1584],{"type":19,"value":1585},"prod",{"type":19,"value":1587}," config file and outputs to the ",{"type":14,"tag":571,"props":1589,"children":1590},{},[1591],{"type":19,"value":1592},"bin/Output",{"type":19,"value":1594}," directory",{"type":14,"tag":1558,"props":1596,"children":1597},{},[1598,1600,1604],{"type":19,"value":1599},"If you have more pairs of file to transform, duplicate the ",{"type":14,"tag":571,"props":1601,"children":1602},{},[1603],{"type":19,"value":1118},{"type":19,"value":1605}," element and populate the properties with respect to the file",{"type":14,"tag":15,"props":1607,"children":1608},{},[1609],{"type":19,"value":1610},"Then, execute the transformation by using the following commands.",{"type":14,"tag":50,"props":1612,"children":1615},{"className":1613,"code":1614},[639],"msbuild WithXdt.csproj /t:Transform\n",[1616],{"type":14,"tag":58,"props":1617,"children":1618},{},[1619],{"type":14,"tag":50,"props":1620,"children":1621},{"__ignoreMap":7},[1622],{"type":14,"tag":65,"props":1623,"children":1624},{"class":67,"line":68},[1625],{"type":14,"tag":65,"props":1626,"children":1627},{},[1628],{"type":19,"value":1629},"msbuild WithXdt.csproj /t:Transform",{"type":14,"tag":15,"props":1631,"children":1632},{},[1633],{"type":19,"value":1634},"Or simply",{"type":14,"tag":50,"props":1636,"children":1639},{"className":1637,"code":1638},[639],"dotnet build\n",[1640],{"type":14,"tag":58,"props":1641,"children":1642},{},[1643],{"type":14,"tag":50,"props":1644,"children":1645},{"__ignoreMap":7},[1646],{"type":14,"tag":65,"props":1647,"children":1648},{"class":67,"line":68},[1649],{"type":14,"tag":65,"props":1650,"children":1651},{},[1652],{"type":19,"value":1653},"dotnet build",{"type":14,"tag":15,"props":1655,"children":1656},{},[1657],{"type":19,"value":1658},"The file tree should now looks like this.",{"type":14,"tag":50,"props":1660,"children":1663},{"className":1661,"code":1662},[639],"MyXmlTransforms/\n├── MyXmlTransforms.csproj\n├── Base/\n│   └── dev.config.xml\n├── Prod/\n│   └── prod.config.xml\n└── bin/\n    └── Output/              \u003C-- created at build time\n",[1664],{"type":14,"tag":58,"props":1665,"children":1666},{},[1667],{"type":14,"tag":50,"props":1668,"children":1669},{"__ignoreMap":7},[1670,1677,1684,1692,1700,1708,1716,1724],{"type":14,"tag":65,"props":1671,"children":1672},{"class":67,"line":68},[1673],{"type":14,"tag":65,"props":1674,"children":1675},{},[1676],{"type":19,"value":655},{"type":14,"tag":65,"props":1678,"children":1679},{"class":67,"line":89},[1680],{"type":14,"tag":65,"props":1681,"children":1682},{},[1683],{"type":19,"value":663},{"type":14,"tag":65,"props":1685,"children":1686},{"class":67,"line":116},[1687],{"type":14,"tag":65,"props":1688,"children":1689},{},[1690],{"type":19,"value":1691},"├── Base/\n",{"type":14,"tag":65,"props":1693,"children":1694},{"class":67,"line":142},[1695],{"type":14,"tag":65,"props":1696,"children":1697},{},[1698],{"type":19,"value":1699},"│   └── dev.config.xml\n",{"type":14,"tag":65,"props":1701,"children":1702},{"class":67,"line":168},[1703],{"type":14,"tag":65,"props":1704,"children":1705},{},[1706],{"type":19,"value":1707},"├── Prod/\n",{"type":14,"tag":65,"props":1709,"children":1710},{"class":67,"line":485},[1711],{"type":14,"tag":65,"props":1712,"children":1713},{},[1714],{"type":19,"value":1715},"│   └── prod.config.xml\n",{"type":14,"tag":65,"props":1717,"children":1718},{"class":67,"line":498},[1719],{"type":14,"tag":65,"props":1720,"children":1721},{},[1722],{"type":19,"value":1723},"└── bin/\n",{"type":14,"tag":65,"props":1725,"children":1726},{"class":67,"line":519},[1727],{"type":14,"tag":65,"props":1728,"children":1729},{},[1730],{"type":19,"value":1731},"    └── Output/              \u003C-- created at build time",{"type":14,"tag":38,"props":1733,"children":1735},{"id":1734},"common-xdt-transform-attributes",[1736],{"type":19,"value":1737},"Common XDT Transform Attributes",{"type":14,"tag":15,"props":1739,"children":1740},{},[1741],{"type":19,"value":1742},"Here are some of the common XDT operations.",{"type":14,"tag":1744,"props":1745,"children":1746},"table",{},[1747,1775],{"type":14,"tag":1748,"props":1749,"children":1750},"thead",{},[1751],{"type":14,"tag":1752,"props":1753,"children":1754},"tr",{},[1755,1761,1768],{"type":14,"tag":1756,"props":1757,"children":1759},"th",{"align":1758},null,[1760],{"type":19,"value":43},{"type":14,"tag":1756,"props":1762,"children":1763},{"align":1758},[1764],{"type":14,"tag":571,"props":1765,"children":1766},{},[1767],{"type":19,"value":461},{"type":14,"tag":1756,"props":1769,"children":1770},{"align":1758},[1771],{"type":14,"tag":571,"props":1772,"children":1773},{},[1774],{"type":19,"value":440},{"type":14,"tag":1776,"props":1777,"children":1778},"tbody",{},[1779,1804,1835,1860,1888],{"type":14,"tag":1752,"props":1780,"children":1781},{},[1782,1788,1796],{"type":14,"tag":1783,"props":1784,"children":1785},"td",{"align":1758},[1786],{"type":19,"value":1787},"Change an attribute",{"type":14,"tag":1783,"props":1789,"children":1790},{"align":1758},[1791],{"type":14,"tag":571,"props":1792,"children":1793},{},[1794],{"type":19,"value":1795},"SetAttributes(attrName)",{"type":14,"tag":1783,"props":1797,"children":1798},{"align":1758},[1799],{"type":14,"tag":571,"props":1800,"children":1801},{},[1802],{"type":19,"value":1803},"Match(keyAttr)",{"type":14,"tag":1752,"props":1805,"children":1806},{},[1807,1812,1820],{"type":14,"tag":1783,"props":1808,"children":1809},{"align":1758},[1810],{"type":19,"value":1811},"Replace entire element",{"type":14,"tag":1783,"props":1813,"children":1814},{"align":1758},[1815],{"type":14,"tag":571,"props":1816,"children":1817},{},[1818],{"type":19,"value":1819},"Replace",{"type":14,"tag":1783,"props":1821,"children":1822},{"align":1758},[1823,1828,1830],{"type":14,"tag":571,"props":1824,"children":1825},{},[1826],{"type":19,"value":1827},"Match(...)",{"type":19,"value":1829}," or ",{"type":14,"tag":571,"props":1831,"children":1832},{},[1833],{"type":19,"value":1834},"XPath(...)",{"type":14,"tag":1752,"props":1836,"children":1837},{},[1838,1843,1851],{"type":14,"tag":1783,"props":1839,"children":1840},{"align":1758},[1841],{"type":19,"value":1842},"Insert new element",{"type":14,"tag":1783,"props":1844,"children":1845},{"align":1758},[1846],{"type":14,"tag":571,"props":1847,"children":1848},{},[1849],{"type":19,"value":1850},"Insert",{"type":14,"tag":1783,"props":1852,"children":1853},{"align":1758},[1854],{"type":14,"tag":1855,"props":1856,"children":1857},"em",{},[1858],{"type":19,"value":1859},"(none)",{"type":14,"tag":1752,"props":1861,"children":1862},{},[1863,1868,1876],{"type":14,"tag":1783,"props":1864,"children":1865},{"align":1758},[1866],{"type":19,"value":1867},"Remove an element",{"type":14,"tag":1783,"props":1869,"children":1870},{"align":1758},[1871],{"type":14,"tag":571,"props":1872,"children":1873},{},[1874],{"type":19,"value":1875},"Remove",{"type":14,"tag":1783,"props":1877,"children":1878},{"align":1758},[1879,1883,1884],{"type":14,"tag":571,"props":1880,"children":1881},{},[1882],{"type":19,"value":1827},{"type":19,"value":1829},{"type":14,"tag":571,"props":1885,"children":1886},{},[1887],{"type":19,"value":1834},{"type":14,"tag":1752,"props":1889,"children":1890},{},[1891,1896,1904],{"type":14,"tag":1783,"props":1892,"children":1893},{"align":1758},[1894],{"type":19,"value":1895},"Remove an attribute",{"type":14,"tag":1783,"props":1897,"children":1898},{"align":1758},[1899],{"type":14,"tag":571,"props":1900,"children":1901},{},[1902],{"type":19,"value":1903},"RemoveAttributes(attrName)",{"type":14,"tag":1783,"props":1905,"children":1906},{"align":1758},[1907],{"type":14,"tag":571,"props":1908,"children":1909},{},[1910],{"type":19,"value":1827},{"type":14,"tag":38,"props":1912,"children":1914},{"id":1913},"summary",[1915],{"type":19,"value":1916},"Summary",{"type":14,"tag":15,"props":1918,"children":1919},{},[1920,1922,1931,1933,1940],{"type":19,"value":1921},"This guide covers the scenario of XDT transformation, simple syntax and project setup. Here is the ",{"type":14,"tag":1923,"props":1924,"children":1928},"a",{"href":1925,"rel":1926},"https://github.com/data-miner00/Sandbox/tree/master/demo/XmlTransform/WithXdt",[1927],"nofollow",[1929],{"type":19,"value":1930},"similar project",{"type":19,"value":1932}," on GitHub for reference. For folder-based transformation, refer to ",{"type":14,"tag":1923,"props":1934,"children":1937},{"href":1935,"rel":1936},"https://github.com/data-miner00/Sandbox/tree/master/demo/XmlTransform/WithXdtBatch",[1927],[1938],{"type":19,"value":1939},"this project",{"type":19,"value":1941},".",{"type":14,"tag":38,"props":1943,"children":1945},{"id":1944},"references",[1946],{"type":19,"value":1947},"References",{"type":14,"tag":1949,"props":1950,"children":1956},"apa-reference",{"source":1951,"title":1952,"url":1953,"retrievedDate":1954,"organization":1955},"websites","Web.config Transformation Syntax for Web Project Deployment Using Visual Studio","https://sparkbyexamples.com/spark/apache-spark-installation-on-windows/","2026, May 3","Microsoft",[],{"type":14,"tag":1949,"props":1958,"children":1962},{"source":1951,"title":1959,"url":1960,"retrievedDate":1954,"publisher":1961},"Web Config Transform","https://logicwiki.co.uk/Web_Config_Transform","Logicmade Wiki",[],{"type":14,"tag":1949,"props":1964,"children":1969},{"source":1951,"title":1965,"url":1966,":authors":1967,"date":1968},"Xdt transform samples","https://github.com/projectkudu/kudu/wiki/Xdt-transform-samples","[\"Suwat, C\"]","2019, August 3",[],{"type":14,"tag":1949,"props":1971,"children":1974},{"source":1951,"title":1972,"url":1973,"retrievedDate":1954},"XPath Syntax","https://www.w3schools.com/xml/xpath_syntax.asp",[],{"type":14,"tag":1976,"children":1977},"style",[1978],{"type":19,"value":1979},".ct-947867{color:#24292F;}\n.dark .ct-947867{color:#C9D1D9;}\n.ct-241623{color:#116329;}\n.dark .ct-241623{color:#7EE787;}\n.ct-642681{color:#0550AE;}\n.dark .ct-642681{color:#79C0FF;}\n.ct-094461{color:#0A3069;}\n.dark .ct-094461{color:#A5D6FF;}\n.ct-463487{color:#6E7781;}\n.dark .ct-463487{color:#8B949E;}",{"title":7,"searchDepth":89,"depth":89,"links":1981},[1982,1983,1984,1985,1986,1987],{"id":40,"depth":89,"text":43},{"id":314,"depth":89,"text":317},{"id":620,"depth":89,"text":623},{"id":1734,"depth":89,"text":1737},{"id":1913,"depth":89,"text":1916},{"id":1944,"depth":89,"text":1947},"markdown","content:articles:general:msbuild-xdt-transform.md","content","articles/general/msbuild-xdt-transform.md","md"]