{"id":922,"date":"2011-05-04T09:27:40","date_gmt":"2011-05-04T07:27:40","guid":{"rendered":"http:\/\/mariusbancila.ro\/blog\/?p=922"},"modified":"2011-05-19T15:00:40","modified_gmt":"2011-05-19T13:00:40","slug":"generate-output-from-t4-at-build-time","status":"publish","type":"post","link":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/","title":{"rendered":"Generate Output from T4 at Build Time"},"content":{"rendered":"<p>Text templates (aka T4) is a great feature in Visual Studio, that proves helpful in many scenarios. I use it for instance in developing <a href=\"http:\/\/mariusbancila.ro\/blog\/games\/alchemy\/\">Alchemy<\/a>. However, it has a significant drawback: it does not generate code automatically when you build your solution. To build the files and generate their output you have to manually run either <strong>Run Custom Tool<\/strong> command for each .tt file, or <strong>Transform All Templates<\/strong> for the entire solution.<\/p>\n<table border=\"0\">\n<tr valign=\"top\">\n<td><figure style=\"width: 235px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"\/blog\/wp-content\/uploads\/2011\/05\/vs2010runcustomtool.png\" title=\"Run Custom Tool\" width=\"245\" height=\"214\" \/><figcaption class=\"wp-caption-text\">Run Custom Tool<\/figcaption><\/figure><\/td>\n<td><figure style=\"width: 272px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"\/blog\/wp-content\/uploads\/2011\/05\/vs2010tat.png\" title=\"Transform All Templates\" width=\"282\" height=\"107\" \/><figcaption class=\"wp-caption-text\">Transform All Templates<\/figcaption><\/figure><\/td>\n<\/tr>\n<\/table>\n<p>The good news is that Visual Studio 2010 has added capabilities for building the text templates files automatically at the build time. Basically, what you have to do is two things: first install the <a href=\"http:\/\/archive.msdn.microsoft.com\/vsvmsdk\">Visual Studio Visualization and Modeling SDK<\/a>. Second, manually add the following to the project file:<\/p>\n<pre name=\"code\" class=\"xml\">\r\n   &lt;PropertyGroup>\r\n      &lt;TransformOnBuild >true&lt;\/TransformOnBuild>\r\n   &lt;\/PropertyGroup>\r\n\r\n   &lt;Import Project=\r\n     \"$(MSBuildExtensionsPath)\\Microsoft\\VisualStudio\\TextTemplating\\v10.0\\Microsoft.TextTemplating.targets\" \/>\r\n<\/pre>\n<p>And that should do the trick. When you build the project, the .tt files will also be built.<\/p>\n<p>To read more about this topic see:<\/p>\n<ul>\n<li><a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ee847423.aspx\">Code Generation in a Build Process<\/a><\/li>\n<li><a href=\"http:\/\/www.olegsych.com\/2010\/04\/understanding-t4-msbuild-integration\/\">Understanding T4: MSBuild Integration<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Text templates (aka T4) is a great feature in Visual Studio, that proves helpful in many scenarios. I use it for instance in developing Alchemy. However, it has a significant drawback: it does not generate code automatically when you build your solution. To build the files and generate their output you have to manually run &#8230; <a title=\"Generate Output from T4 at Build Time\" class=\"read-more\" href=\"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/\" aria-label=\"Read more about Generate Output from T4 at Build Time\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","advgb_blocks_editor_width":"","advgb_blocks_columns_visual_guide":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[52,10],"tags":[114,133,270,105,89],"class_list":["post-922","post","type-post","status-publish","format-standard","hentry","category-tools","category-visual-studio","tag-build","tag-msbuild","tag-t4","tag-template","tag-vs2010"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"Learn how to generate output from text templates at build time with MSBuild targets.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Marius Bancila\"\/>\n\t<meta name=\"keywords\" content=\"text templates,t4,build,msbuild,visual studio,vs2010,template\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Marius Bancila&#039;s Blog | About code. Mostly on C++\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Generate Output from T4 at Build Time\" \/>\n\t\t<meta property=\"og:description\" content=\"Learn how to generate output from text templates at build time with MSBuild targets.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2011-05-04T07:27:40+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2011-05-19T13:00:40+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Generate Output from T4 at Build Time\" \/>\n\t\t<meta name=\"twitter:description\" content=\"Learn how to generate output from text templates at build time with MSBuild targets.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#article\",\"name\":\"Generate Output from T4 at Build Time\",\"headline\":\"Generate Output from T4 at Build Time\",\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"},\"image\":{\"@type\":\"ImageObject\",\"url\":\"\\\/blog\\\/wp-content\\\/uploads\\\/2011\\\/05\\\/vs2010runcustomtool.png\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#articleImage\"},\"datePublished\":\"2011-05-04T09:27:40+02:00\",\"dateModified\":\"2011-05-19T15:00:40+02:00\",\"inLanguage\":\"en-US\",\"commentCount\":5,\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#webpage\"},\"articleSection\":\"Tools, Visual Studio, build, msbuild, T4, template, VS2010\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"position\":2,\"name\":\"IT\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"position\":3,\"name\":\"Software\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/#listItem\",\"name\":\"IT\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"position\":4,\"name\":\"Visual Studio\",\"item\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#listItem\",\"name\":\"Generate Output from T4 at Build Time\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/#listItem\",\"name\":\"Software\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#listItem\",\"position\":5,\"name\":\"Generate Output from T4 at Build Time\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/category\\\/it\\\/software\\\/visual-studio\\\/#listItem\",\"name\":\"Visual Studio\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/\",\"name\":\"Marius Bancila\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g\",\"width\":96,\"height\":96,\"caption\":\"Marius Bancila\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#webpage\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/\",\"name\":\"Generate Output from T4 at Build Time\",\"description\":\"Learn how to generate output from text templates at build time with MSBuild targets.\",\"inLanguage\":\"en-US\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/2011\\\/05\\\/04\\\/generate-output-from-t4-at-build-time\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/author\\\/admin\\\/#author\"},\"datePublished\":\"2011-05-04T09:27:40+02:00\",\"dateModified\":\"2011-05-19T15:00:40+02:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/\",\"name\":\"Marius Bancila's Blog\",\"description\":\"About code. Mostly on C++\",\"inLanguage\":\"en-US\",\"publisher\":{\"@id\":\"https:\\\/\\\/mariusbancila.ro\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Generate Output from T4 at Build Time","description":"Learn how to generate output from text templates at build time with MSBuild targets.","canonical_url":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/","robots":"max-image-preview:large","keywords":"text templates,t4,build,msbuild,visual studio,vs2010,template","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#article","name":"Generate Output from T4 at Build Time","headline":"Generate Output from T4 at Build Time","author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"},"image":{"@type":"ImageObject","url":"\/blog\/wp-content\/uploads\/2011\/05\/vs2010runcustomtool.png","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#articleImage"},"datePublished":"2011-05-04T09:27:40+02:00","dateModified":"2011-05-19T15:00:40+02:00","inLanguage":"en-US","commentCount":5,"mainEntityOfPage":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#webpage"},"isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#webpage"},"articleSection":"Tools, Visual Studio, build, msbuild, T4, template, VS2010"},{"@type":"BreadcrumbList","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","position":1,"name":"Home","item":"https:\/\/mariusbancila.ro\/blog\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","position":2,"name":"IT","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","position":3,"name":"Software","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/#listItem","name":"IT"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","position":4,"name":"Visual Studio","item":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/","nextItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#listItem","name":"Generate Output from T4 at Build Time"},"previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/#listItem","name":"Software"}},{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#listItem","position":5,"name":"Generate Output from T4 at Build Time","previousItem":{"@type":"ListItem","@id":"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/#listItem","name":"Visual Studio"}}]},{"@type":"Organization","@id":"https:\/\/mariusbancila.ro\/blog\/#organization","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","url":"https:\/\/mariusbancila.ro\/blog\/"},{"@type":"Person","@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author","url":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/","name":"Marius Bancila","image":{"@type":"ImageObject","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/a84dd2831d955c38355ddea55df4df260809b88f36408bc14fd4eab8f7f131c9?s=96&d=mm&r=g","width":96,"height":96,"caption":"Marius Bancila"}},{"@type":"WebPage","@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#webpage","url":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/","name":"Generate Output from T4 at Build Time","description":"Learn how to generate output from text templates at build time with MSBuild targets.","inLanguage":"en-US","isPartOf":{"@id":"https:\/\/mariusbancila.ro\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/#breadcrumblist"},"author":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"creator":{"@id":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/#author"},"datePublished":"2011-05-04T09:27:40+02:00","dateModified":"2011-05-19T15:00:40+02:00"},{"@type":"WebSite","@id":"https:\/\/mariusbancila.ro\/blog\/#website","url":"https:\/\/mariusbancila.ro\/blog\/","name":"Marius Bancila's Blog","description":"About code. Mostly on C++","inLanguage":"en-US","publisher":{"@id":"https:\/\/mariusbancila.ro\/blog\/#organization"}}]},"og:locale":"en_US","og:site_name":"Marius Bancila's Blog | About code. Mostly on C++","og:type":"article","og:title":"Generate Output from T4 at Build Time","og:description":"Learn how to generate output from text templates at build time with MSBuild targets.","og:url":"https:\/\/mariusbancila.ro\/blog\/2011\/05\/04\/generate-output-from-t4-at-build-time\/","article:published_time":"2011-05-04T07:27:40+00:00","article:modified_time":"2011-05-19T13:00:40+00:00","twitter:card":"summary","twitter:title":"Generate Output from T4 at Build Time","twitter:description":"Learn how to generate output from text templates at build time with MSBuild targets."},"aioseo_meta_data":{"post_id":"922","title":"Generate Output from T4 at Build Time","description":"Learn how to generate output from text templates at build time with MSBuild targets.","keywords":[{"label":"text templates","value":"text templates"},{"label":"T4","value":"T4"},{"label":"build","value":"build"},{"label":"MSBuild","value":"MSBuild"},{"label":"Visual Studio","value":"Visual Studio"},{"label":"VS2010","value":"VS2010"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2021-03-18 21:13:02","updated":"2025-12-12 07:36:11","seo_analyzer_scan_date":null,"focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"author_meta":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"featured_img":null,"jetpack_publicize_connections":[],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Marius Bancila","author_link":"https:\/\/mariusbancila.ro\/blog\/author\/admin\/"},"uagb_comment_info":5,"uagb_excerpt":"Text templates (aka T4) is a great feature in Visual Studio, that proves helpful in many scenarios. I use it for instance in developing Alchemy. However, it has a significant drawback: it does not generate code automatically when you build your solution. To build the files and generate their output you have to manually run&hellip;","coauthors":[],"tax_additional":{"categories":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/tools\/\" class=\"advgb-post-tax-term\">Tools<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">Visual Studio<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">Tools<\/span>","<span class=\"advgb-post-tax-term\">Visual Studio<\/span>"]},"tags":{"linked":["<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">build<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">msbuild<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">T4<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">template<\/a>","<a href=\"https:\/\/mariusbancila.ro\/blog\/category\/it\/software\/visual-studio\/\" class=\"advgb-post-tax-term\">VS2010<\/a>"],"unlinked":["<span class=\"advgb-post-tax-term\">build<\/span>","<span class=\"advgb-post-tax-term\">msbuild<\/span>","<span class=\"advgb-post-tax-term\">T4<\/span>","<span class=\"advgb-post-tax-term\">template<\/span>","<span class=\"advgb-post-tax-term\">VS2010<\/span>"]}},"comment_count":"5","relative_dates":{"created":"Posted 15 years ago","modified":"Updated 15 years ago"},"absolute_dates":{"created":"Posted on May 4, 2011","modified":"Updated on May 19, 2011"},"absolute_dates_time":{"created":"Posted on May 4, 2011 9:27 am","modified":"Updated on May 19, 2011 3:00 pm"},"featured_img_caption":"","series_order":"","jetpack_shortlink":"https:\/\/wp.me\/pYNdv-eS","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/922","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/comments?post=922"}],"version-history":[{"count":13,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/922\/revisions"}],"predecessor-version":[{"id":981,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/posts\/922\/revisions\/981"}],"wp:attachment":[{"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/media?parent=922"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/categories?post=922"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mariusbancila.ro\/blog\/wp-json\/wp\/v2\/tags?post=922"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}