{"id":4516,"date":"2018-01-08T11:08:58","date_gmt":"2018-01-08T11:08:58","guid":{"rendered":"http:\/\/www.scmgalaxy.com\/tutorials\/?p=4516"},"modified":"2018-01-08T11:08:58","modified_gmt":"2018-01-08T11:08:58","slug":"introduction-of-msbuild","status":"publish","type":"post","link":"https:\/\/www.devopsschool.com\/blog\/introduction-of-msbuild\/","title":{"rendered":"Introduction of MSbuild"},"content":{"rendered":"<div class=\"elgg-listing-full elgg-content clearfix\" data-guid=\"2847\">\n<div class=\"elgg-image-block clearfix elgg-listing-full-header\">\n<div class=\"elgg-body\">\n<div class=\"elgg-listing-summary-subtitle elgg-subtext\">By\u00a0<a href=\"http:\/\/community.scmgalaxy.com\/blog\/owner\/rambabu1683\" target=\"_blank\" rel=\"noopener\">Rambabu Muppuri<\/a>\u00a0<time title=\"29 April 2010 @ 10:14pm\" datetime=\"2010-04-29T22:14:51-07:00\">2810 days ago<\/time>\u00a0<a href=\"http:\/\/community.scmgalaxy.com\/blog\/view\/2847\/introduction-of-msbuild#comments\" target=\"_blank\" rel=\"noopener\">Comments (3)<\/a><\/div>\n<div class=\"clearfix\">\n<ul class=\"elgg-tags\">\n<li><\/li>\n<li class=\"elgg-tag\"><a href=\"http:\/\/community.scmgalaxy.com\/search?q=can+u+pl+help+me+anyone+introduction+of+msbuild%3F&amp;search_type=tags\" rel=\"tag noopener\" target=\"_blank\">can u pl help me anyone introduction of msbuild?<\/a><\/li>\n<\/ul>\n<\/div>\n<\/div>\n<\/div>\n<div class=\"elgg-output blog-post\">\n<p>Hi Guys,<\/p>\n<p>can u pl help me anyone Introduction of MSbuild?<\/p>\n<p>Regards,<\/p>\n<p>Rambabu.M<\/p>\n<\/div>\n<\/div>\n<div id=\"comments\" class=\"elgg-comments blog-comments\">\n<ul class=\"elgg-list elgg-list-entity\">\n<li id=\"elgg-object-43130\" class=\"elgg-item elgg-item-object elgg-item-object-comment\">\n<div class=\"elgg-image-block clearfix\">\n<div class=\"elgg-image\">\n<div class=\"elgg-avatar elgg-avatar-tiny\"><a class=\"\" href=\"http:\/\/community.scmgalaxy.com\/profile\/rajeshkumar\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"\" title=\"Rajesh Kumar\" src=\"http:\/\/community.scmgalaxy.com\/serve-file\/e0\/l1481295947\/di\/c0\/DvX3nSE-uqKjjX5cKaVIDgy-EEgV_Q5LK1iM9vbQUL0\/1\/84\/profile\/84tiny.jpg\" alt=\"Rajesh Kumar\" \/><\/a><\/div>\n<\/div>\n<div class=\"elgg-body\"><a name=\"comment-43130\"><\/a><\/p>\n<div class=\"mbn\"><a href=\"http:\/\/community.scmgalaxy.com\/profile\/rajeshkumar\" target=\"_blank\" rel=\"noopener\">Rajesh Kumar<\/a>\u00a0<span class=\"elgg-subtext\"><a href=\"http:\/\/community.scmgalaxy.com\/comment\/view\/43130\/2847\" target=\"_blank\" rel=\"noopener\"><time title=\"3 May 2010 @ 12:10am\" datetime=\"2010-05-03T00:10:01-07:00\">2807 days ago<\/time><\/a><\/span><\/p>\n<div class=\"elgg-output elgg-inner\" data-role=\"comment-text\">\n<div>MSBuild Overview<\/div>\n<div>\n<p>The Microsoft Build Engine (MSBuild) is the new build platform for Microsoft and Visual Studio. MSBuild is completely transparent with regards to how it processes and builds software, enabling developers to orchestrate and build products in build lab environments where Visual Studio is not installed. This topic provides brief overviews of:<\/p>\n<ul>\n<li>The basic elements of an MSBuild project file.<\/li>\n<li>How MSBuild is used to build projects.<\/li>\n<li>The advanced features of MSBuild.<\/li>\n<li>How Visual Studio uses MSBuild to build projects.<\/li>\n<\/ul>\n<\/div>\n<div>\n<div>\n<p>Project File<\/p>\n<div>\n<hr \/>\n<\/div>\n<\/div>\n<p>MSBuild introduces a new XML-based project file format that is simple to understand, easy to extend, and fully supported by Microsoft. The MSBuild project file format enables developers to fully describe what items need to be built as well as how they need to be built with different platforms and configurations. In addition, the project file format enables developers to author re-usable build rules that can be factored into separate files so that builds can be performed consistently across different projects within their product. The following sections describe some of the basic elements of the MSBuild project file format.<\/p>\n<h3>Items<\/h3>\n<div>\n<p>Items represent inputs into the build system and are grouped into item collections based on their user-defined collection names. These item collections can be used as parameters for tasks, which use the individual items contained in the collection to perform the steps of the build process.<\/p>\n<p>Items are declared in the project file by creating an element with the name of the item collection as a child of an\u00a0<strong>ItemGroup<\/strong>element. For example, the following code creates an item collection named\u00a0Compile, which includes two files.<\/p>\n<div>\n<p><a id=\"CodeSpippet0\" name=\"CodeSpippet0\"><\/a><\/p>\n<div>\n<div>\n<div><a title=\"Copy to clipboard.\">Copy<\/a><\/div>\n<\/div>\n<div id=\"CodeSnippetContainerCode0\">\n<div>\n<pre>&lt;ItemGroup&gt;\r\n    &lt;Compile Include = \"file1.cs\"\/&gt;\r\n    &lt;Compile Include = \"file2.cs\"\/&gt;\r\n&lt;\/ItemGroup&gt;\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>You reference item collections throughout the project file with the syntax @(ItemCollectionName). For example, you reference the item collection in the example above with\u00a0@(Compile).<\/p>\n<p>Items can be declared using wildcards and may contain additional metadata for more advanced build scenarios. For more information on items, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171453%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Items<\/a>.<\/p>\n<\/div>\n<h3>Properties<\/h3>\n<div>\n<p>Properties represent key\/value pairs that can be used to configure builds. Items and properties differ in the following ways:<\/p>\n<ul>\n<li>Items are stored in collections, while properties contain a single scalar value.<\/li>\n<li>Items cannot be removed from item collections, while properties can have their values changed after they are defined.<\/li>\n<li>Items can contain metadata and can use the\u00a0%(ItemMetadata)\u00a0notation, while properties cannot.<\/li>\n<\/ul>\n<p>Properties are declared by creating an element with the name of the property as a child of a\u00a0<strong>PropertyGroup<\/strong>\u00a0element. For example, the following code creates a property named\u00a0BuildDir\u00a0with a value of\u00a0Build.<\/p>\n<div>\n<p><a id=\"CodeSpippet1\" name=\"CodeSpippet1\"><\/a><\/p>\n<div>\n<div>\n<div><a title=\"Copy to clipboard.\">Copy<\/a><\/div>\n<\/div>\n<div id=\"CodeSnippetContainerCode1\">\n<div>\n<pre>&lt;PropertyGroup&gt;\r\n    &lt;BuildDir&gt;Build&lt;\/BuildDir&gt;\r\n&lt;\/PropertyGroup&gt;\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>You reference properties throughout the project file with the syntax $(PropertyName). For example, you reference the property in the example above with\u00a0$(BuildDir). For more information on properties, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171458%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Properties<\/a>.<\/p>\n<\/div>\n<h3>Tasks<\/h3>\n<div>\n<p>Tasks are reusable units of executable code used by MSBuild projects to perform build operations. For example, a task might compile input files or run an external tool. Once created, tasks can be shared and reused by different developers in different projects.<\/p>\n<p>The execution logic of a task is written in managed code and mapped to MSBuild with the\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/t41tzex2%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">UsingTask<\/a>\u00a0element. You can write your own task by authoring a managed type that implements the\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/microsoft.build.framework.itask%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">ITask<\/a>\u00a0interface. For more information on writing tasks, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/t9883dzc%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">How to: Write a Task<\/a>.<\/p>\n<p>MSBuild ships with many common tasks such as\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/3e54c37h%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">Copy<\/a>, which copies files,\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/s2448zz7%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MakeDir<\/a>, which creates directories, and\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/s5c8athz%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">Csc<\/a>, which compiles Visual C# source code files. For a complete list of available tasks and usage information, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/7z253716%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Task Reference<\/a>.<\/p>\n<p>You execute a task in an MSBuild project file by creating an element with the name of the task as a child of a\u00a0<strong>Target<\/strong>element. Tasks usually accept parameters, which are passed as attributes of the element. MSBuild item collections and properties can be used as parameters. For example, the following code calls the\u00a0<strong>MakeDir<\/strong>\u00a0task and passes it the value of the\u00a0BuildDir\u00a0property declared in the previous example.<\/p>\n<div>\n<p><a id=\"CodeSpippet2\" name=\"CodeSpippet2\"><\/a><\/p>\n<div>\n<div>\n<div><a title=\"Copy to clipboard.\">Copy<\/a><\/div>\n<\/div>\n<div id=\"CodeSnippetContainerCode2\">\n<div>\n<pre>&lt;Target Name=\"MakeBuildDirectory\"&gt;\r\n    &lt;MakeDir\r\n        Directories=\"$(BuildDir)\" \/&gt;\r\n&lt;\/Target&gt;\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>For more information on tasks, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171466%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Tasks<\/a>.<\/p>\n<\/div>\n<h3>Targets<\/h3>\n<div>\n<p>Targets group tasks together in a particular order and expose sections of the project file as entry points into the build process. Targets are often grouped into logical sections to allow for expansion and increase readability. Breaking the build steps into many targets allows you to call one piece of the build process from other targets without having to copy that section of code into each target. For example, if several entry points into the build process require references to be built, you can create a target that builds references and run that target from every necessary entry point.<\/p>\n<p>Targets are declared in the project file with the\u00a0<strong>Target<\/strong>\u00a0element. For example, the following code creates a target named\u00a0Compile, which then calls the\u00a0<strong>Csc<\/strong>\u00a0task with the item collection declared in the previous example.<\/p>\n<div>\n<p><a id=\"CodeSpippet3\" name=\"CodeSpippet3\"><\/a><\/p>\n<div>\n<div>\n<div><a title=\"Copy to clipboard.\">Copy<\/a><\/div>\n<\/div>\n<div id=\"CodeSnippetContainerCode3\">\n<div>\n<pre>&lt;Target Name=\"Compile\"&gt;\r\n    &lt;Csc Sources=\"@(Compile)\" \/&gt;\r\n&lt;\/Target&gt;\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>In more advanced scenarios targets can describe relationships between each other and perform dependency analysis, which allows whole sections of the build process to be skipped if that target is up-to-date. For more information on targets, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171462%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Targets<\/a>.<\/p>\n<\/div>\n<\/div>\n<div>\n<div>\n<p>Building with MSBuild<\/p>\n<div>\n<hr \/>\n<\/div>\n<\/div>\n<p>You run MSBuild from the command line by passing a project file to MSBuild.exe with the appropriate command line options. Command line options allow you to set properties, execute specific targets, and specify loggers. For example, you would use the following command line syntax to build the file\u00a0MyProj.proj\u00a0with the\u00a0Configuration\u00a0property set to\u00a0Debug.<\/p>\n<div>\n<p><a id=\"CodeSpippet4\" name=\"CodeSpippet4\"><\/a><\/p>\n<div>\n<div>\n<div><a title=\"Copy to clipboard.\">Copy<\/a><\/div>\n<\/div>\n<div id=\"CodeSnippetContainerCode4\">\n<div>\n<pre>MSBuild.exe MyProj.proj \/property:Configuration=Debug\r\n\r\n<\/pre>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>For more information on MSBuild command line options, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms164311%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Command Line Reference<\/a>.<\/p>\n<div>\n<table border=\"0\">\n<tbody>\n<tr>\n<th><img decoding=\"async\" title=\"Security note\" src=\"http:\/\/i.msdn.microsoft.com\/Hash\/030c41d9079671d09a62d8e2c1db6973.gif\" alt=\"Security note\" \/><strong>Security Note:<\/strong><\/th>\n<\/tr>\n<tr>\n<td>Before you build a downloaded project, determine the trustworthiness of the code. MSBuild project files have the ability to execute tasks that can damage your system.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<div>\n<div>\n<p>Advanced concepts<\/p>\n<div>\n<hr \/>\n<\/div>\n<\/div>\n<p>MSBuild can be used for more advanced operations during builds, such as logging errors, warnings, and messages to the console or other loggers, performing dependency analysis on targets, and batching tasks and targets on item metadata. For more information on these advanced concepts, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171469%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Advanced Concepts<\/a>.<\/p>\n<\/div>\n<div>\n<div>\n<p>Visual Studio Integration<\/p>\n<div>\n<hr \/>\n<\/div>\n<\/div>\n<p>Visual Studio uses the MSBuild project file format to store build information about managed projects. Project settings added and changed through Visual Studio are reflected in the .*proj file that is generated for each project. Visual Studio uses a hosted instance of MSBuild to build managed projects, meaning that a managed project can be built in Visual Studio and from the command line (even without Visual Studio installed), with identical results. For more information on how Visual Studio uses MSBuild, see\u00a0<a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171469%28v=VS.90%29.aspx\" target=\"_blank\" rel=\"noopener\">MSBuild Advanced Concepts<\/a>.<\/p>\n<p><strong>Source:<\/strong><\/p>\n<p><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms171452%28VS.90%29.aspx\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/msdn.microsoft.com\/en-us\/library\/ms171452%28VS.90%29.aspx<\/a><\/p>\n<p>&nbsp;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li id=\"elgg-object-43129\" class=\"elgg-item elgg-item-object elgg-item-object-comment\">\n<div class=\"elgg-image-block clearfix\">\n<div class=\"elgg-image\">\n<div class=\"elgg-avatar elgg-avatar-tiny\"><a class=\"\" href=\"http:\/\/community.scmgalaxy.com\/profile\/rambabu1683\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"\" title=\"Rambabu Muppuri\" src=\"http:\/\/community.scmgalaxy.com\/cache\/1515229017\/default\/icons\/user\/defaulttiny.gif\" alt=\"Rambabu Muppuri\" \/><\/a><\/div>\n<\/div>\n<div class=\"elgg-body\"><a name=\"comment-43129\"><\/a><\/p>\n<div class=\"mbn\"><a href=\"http:\/\/community.scmgalaxy.com\/profile\/rambabu1683\" target=\"_blank\" rel=\"noopener\">Rambabu Muppuri<\/a>\u00a0<span class=\"elgg-subtext\"><a href=\"http:\/\/community.scmgalaxy.com\/comment\/view\/43129\/2847\" target=\"_blank\" rel=\"noopener\"><time title=\"4 May 2010 @ 3:43am\" datetime=\"2010-05-04T03:43:08-07:00\">2806 days ago<\/time><\/a><\/span><\/p>\n<div class=\"elgg-output elgg-inner\" data-role=\"comment-text\">\n<p>hi raj , thanks for ur comments ..could u pl let me know\u00a0how can we increment version numbers through msbuild tool..i have\u00a0written below xml tag but which is not working ..pl help me..<br \/>\n&lt;Target Name=&#8221;Version&#8221;&gt;if its possible send one exmaple with version numbers increment..<\/p>\n<p>&lt;Message Text=&#8221;Version: $(Major).$(Minor).$(Build).$(Revision)&#8221;\/&gt;<\/p>\n<p>&lt;AssemblyInfo CodeLanguage=&#8221;VB&#8221;<\/p>\n<p>OutputFile=&#8221;My Project\\AssemblyInfo.vb&#8221;<\/p>\n<p>AssemblyTitle=&#8221;&#8221;<\/p>\n<p>AssemblyDescription=&#8221;&#8221;<\/p>\n<p>AssemblyCompany=&#8221;&#8221;<\/p>\n<p>AssemblyProduct=&#8221;&#8221;<\/p>\n<p>AssemblyCopyright=&#8221;&#8221;<\/p>\n<p>ComVisible=&#8221;false&#8221;<\/p>\n<p>CLSCompliant=&#8221;true&#8221;<\/p>\n<p>Guid=&#8221;d038566a-1937-478a-b5c5-b79c4afb253d&#8221;<\/p>\n<p>AssemblyVersion=&#8221;$(Major).$(Minor).$(Build).$(Revision)&#8221;<\/p>\n<p>AssemblyFileVersion=&#8221;$(Major).$(Minor).$(Build).$(Revision)&#8221;<\/p>\n<p>Condition=&#8221;$(Revision) != &#8216;0&#8217; &#8220;\/&gt;<br \/>\n&lt;\/Target&gt;<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<li id=\"elgg-object-43128\" class=\"elgg-item elgg-item-object elgg-item-object-comment\">\n<div class=\"elgg-image-block clearfix\">\n<div class=\"elgg-image\">\n<div class=\"elgg-avatar elgg-avatar-tiny\"><a class=\"\" href=\"http:\/\/community.scmgalaxy.com\/profile\/rajeshkumar\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" class=\"\" title=\"Rajesh Kumar\" src=\"http:\/\/community.scmgalaxy.com\/serve-file\/e0\/l1481295947\/di\/c0\/DvX3nSE-uqKjjX5cKaVIDgy-EEgV_Q5LK1iM9vbQUL0\/1\/84\/profile\/84tiny.jpg\" alt=\"Rajesh Kumar\" \/><\/a><\/div>\n<\/div>\n<div class=\"elgg-body\"><a name=\"comment-43128\"><\/a><\/p>\n<div class=\"mbn\"><a href=\"http:\/\/community.scmgalaxy.com\/profile\/rajeshkumar\" target=\"_blank\" rel=\"noopener\">Rajesh Kumar<\/a>\u00a0<span class=\"elgg-subtext\"><a href=\"http:\/\/community.scmgalaxy.com\/comment\/view\/43128\/2847\" target=\"_blank\" rel=\"noopener\"><time title=\"5 May 2010 @ 2:38am\" datetime=\"2010-05-05T02:38:47-07:00\">2805 days ago<\/time><\/a><\/span><\/p>\n<div class=\"elgg-output elgg-inner\" data-role=\"comment-text\">\n<p>Long time back same thing i did using Apache ant, you can find logic here\u00a0<a href=\"http:\/\/www.scmgalaxy.com\/component\/content\/article\/62-apache-ant\/129-ant-script-to-reset-buildnumber.html\" rel=\"nofollow noopener\" target=\"_blank\">http:\/\/www.scmgalaxy.com\/component\/content\/article\/62-apache-ant\/129-ant-script-to-reset-buildnumber.html<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>meanwhile, I will try to create using MSBuild in free time.<\/p>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>By\u00a0Rambabu Muppuri\u00a02810 days ago\u00a0Comments (3) can u pl help me anyone introduction of msbuild? Hi Guys, can u pl help me anyone Introduction of MSbuild? Regards, Rambabu.M Rajesh Kumar\u00a02807 days&#8230; <\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_joinchat":[],"footnotes":""},"categories":[51],"tags":[366,4415,4414,4159,4160],"class_list":["post-4516","post","type-post","status-publish","format-standard","hentry","category-msbuild","tag-msbuild","tag-msbuild-definition","tag-msbuild-introduction","tag-msbuild-overview","tag-what-is-msbuild"],"_links":{"self":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/4516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/comments?post=4516"}],"version-history":[{"count":1,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/4516\/revisions"}],"predecessor-version":[{"id":4517,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/posts\/4516\/revisions\/4517"}],"wp:attachment":[{"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/media?parent=4516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/categories?post=4516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devopsschool.com\/blog\/wp-json\/wp\/v2\/tags?post=4516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}