{"id":3268,"date":"2023-03-23T08:28:29","date_gmt":"2023-03-23T07:28:29","guid":{"rendered":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/?p=3268"},"modified":"2023-03-23T08:28:29","modified_gmt":"2023-03-23T07:28:29","slug":"settings-por-entorno-en-dotnet-maui","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/","title":{"rendered":"Settings por entorno en dotNet\u00a0MAUI"},"content":{"rendered":"<header class=\"entry-header\">\n<h1 class=\"entry-title\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3271\" style=\"font-size: 12px;\" src=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg\" alt=\"\" width=\"804\" height=\"509\" srcset=\"https:\/\/encaminablogs.wpenginepowered.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg 804w, https:\/\/encaminablogs.wpenginepowered.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI-300x190.jpg 300w, https:\/\/encaminablogs.wpenginepowered.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI-768x486.jpg 768w, https:\/\/encaminablogs.wpenginepowered.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI-610x386.jpg 610w\" sizes=\"auto, (max-width: 804px) 100vw, 804px\" \/><\/h1>\n<\/header>\n<p><!--more--><\/p>\n<div class=\"entry-meta\"><span style=\"font-size: 16px;\">Una de las primeras cosas que siempre hago en mis aplicaciones m\u00f3viles, creadas con dotNet MAUI, es definir los entornos que voy a utilizar (para este ejemplo, desarrollo, preproducci\u00f3n, y producci\u00f3n) y gestionar las configuraciones propias de cada entorno con archivos <\/span><em style=\"font-size: 16px;\">json<\/em><span style=\"font-size: 16px;\">, de una manera an\u00e1loga a como se hace en\u00a0<\/span><em style=\"font-size: 16px;\">asp.net<\/em><span style=\"font-size: 16px;\">.<\/span><\/div>\n<div class=\"entry-content\">\n<p data-adtags-visited=\"true\">Los pasos que sigo para conseguirlo, son los siguientes.<\/p>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"1_Crear_configuraciones_de_solucion\"><\/span>1. Crear configuraciones de soluci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-adtags-visited=\"true\">Desde el editor de configuraci\u00f3n, a\u00f1ado una configuraci\u00f3n por cada entorno, para\u00a0<em>Debug y Release<\/em>, por lo que en el ejemplo, tendr\u00e9 6 configuraciones:\u00a0<em>DebugDevelopment, ReleaseDevelopment, DebugPreproduction, ReleasePreproduction, Debug y Release<\/em>, siendo\u00a0<em>Debug y Release<\/em>\u00a0los que utilizo como configuraciones de producci\u00f3n.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-766\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=628\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=330 330w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png 628w\" alt=\"\" width=\"330\" height=\"104\" data-attachment-id=\"766\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-5\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png\" data-orig-size=\"628,198\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image.png?w=628\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-768\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=512\" sizes=\"auto, (max-width: 330px) 100vw, 330px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=330 330w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png 512w\" alt=\"\" width=\"330\" height=\"205\" data-attachment-id=\"768\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-1-3\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png\" data-orig-size=\"512,318\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-1\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-1.png?w=512\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"2_Crear_configuraciones_en_los_proyectos\"><\/span>2. Crear configuraciones en los proyectos<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-adtags-visited=\"true\">En el ejemplo que estoy creando, solamente tengo un proyecto, pero si tuviese m\u00e1s, habr\u00eda que repetir estos pasos para cada uno de los proyectos, siempre y cuando tengan funcionalidades que dependan del entorno en el que se est\u00e1n ejecutando. Si no es as\u00ed, en esos proyecto no ser\u00eda necesario a\u00f1adir todas las configuraciones, con mantener\u00a0<em>Debug y Release<\/em>, que son las creadas por defecto, ser\u00eda suficiente.<\/p>\n<p data-adtags-visited=\"true\">Este ejemplo lo estoy creando con\u00a0<em>Rider<\/em>, y este IDE crea autom\u00e1ticamente las configuraciones en todos los proyectos al crear las configuraciones de la soluci\u00f3n. No obstante, desde cualquier IDE se pueden crear manualmente, incluso se pueden a\u00f1adir editando el\u00a0<em>.csproj<\/em>\u00a0de cada proyecto, como se mostrar\u00e1 a continuaci\u00f3n.<\/p>\n<p data-adtags-visited=\"true\">Una vez creadas estas configuraciones, el siguiente paso ser\u00eda a\u00f1adir una constante a cada una de las configuraciones. En mi ejemplo, he a\u00f1adido las constantes\u00a0<em>DEVELOPMENT<\/em>\u00a0y\u00a0<em>PREPRODUCTION<\/em>\u00a0a sus respectivas configuraciones. N\u00f3tese que a las configuraciones de producci\u00f3n no les a\u00f1ado ninguna constante.<\/p>\n<p data-adtags-visited=\"true\">El\u00a0<em>.csproj<\/em>\u00a0del proyecto quedar\u00eda de la siguiente manera.<\/p>\n<pre class=\"wp-block-code\"><code>...\r\n&lt;PropertyGroup&gt;\r\n    ...\r\n    &lt;Configurations&gt;Debug;Release;DebugDevelopment;DebugPreproduction;ReleaseDevelopment;ReleasePreproduction&lt;\/Configurations&gt;\r\n    ...\r\n&lt;\/PropertyGroup&gt;\r\n\r\n&lt;PropertyGroup Condition=\" '$(Configuration)' == 'DebugDevelopment' \"&gt;\r\n  &lt;DefineConstants&gt;TRACE;DEVELOPMENT&lt;\/DefineConstants&gt;\r\n&lt;\/PropertyGroup&gt;\r\n\r\n&lt;PropertyGroup Condition=\" '$(Configuration)' == 'DebugPreproduction' \"&gt;\r\n  &lt;DefineConstants&gt;TRACE;PREPRODUCTION&lt;\/DefineConstants&gt;\r\n&lt;\/PropertyGroup&gt;\r\n\r\n&lt;PropertyGroup Condition=\" '$(Configuration)' == 'ReleaseDevelopment' \"&gt;\r\n  &lt;DefineConstants&gt;TRACE;DEVELOPMENT&lt;\/DefineConstants&gt;\r\n&lt;\/PropertyGroup&gt;\r\n\r\n&lt;PropertyGroup Condition=\" '$(Configuration)' == 'ReleasePreproduction' \"&gt;\r\n  &lt;DefineConstants&gt;TRACE;PREPRODUCTION&lt;\/DefineConstants&gt;\r\n&lt;\/PropertyGroup&gt;\r\n...<\/code><\/pre>\n<div id=\"inline-ad-1__controls\" class=\"ata-controls\"><\/div>\n<p data-adtags-visited=\"true\">Una vez creadas las configuraciones a nivel de soluci\u00f3n y a nivel de proyecto, queda vincularlas. Tanto en\u00a0<em>Rider<\/em>\u00a0como en\u00a0<em>Visual Studio<\/em>, se puede hacer de una forma sencilla con un editor visual.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" class=\"wp-image-777\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=1024\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=1024 1024w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=768 768w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png 1814w\" alt=\"\" data-attachment-id=\"777\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-5-2\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png\" data-orig-size=\"1814,234\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-5\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-5.png?w=1024\" \/><\/figure>\n<\/div>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img decoding=\"async\" class=\"wp-image-775\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=1024\" sizes=\"(max-width: 1024px) 100vw, 1024px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=1024 1024w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=768 768w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png 1844w\" alt=\"\" data-attachment-id=\"775\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-4-2\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png\" data-orig-size=\"1844,226\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-4\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-4.png?w=1024\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"3_Crear_json_de_configuracion\"><\/span>3. Crear json de configuraci\u00f3n<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-adtags-visited=\"true\">De forma an\u00e1loga a lo que tenemos en\u00a0<em>asp.net<\/em>, me gusta crear un\u00a0<em>json<\/em>\u00a0por cada entorno. Siguiendo con el ejemplo, mi proyecto quedar\u00eda de la manera que se muestra a continuaci\u00f3n.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-779\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=528\" sizes=\"auto, (max-width: 424px) 100vw, 424px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=424 424w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png 528w\" alt=\"\" width=\"424\" height=\"138\" data-attachment-id=\"779\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-6\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png\" data-orig-size=\"528,172\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-6\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-6.png?w=528\" \/><\/figure>\n<\/div>\n<p data-adtags-visited=\"true\">Adem\u00e1s, para poder acceder a estos\u00a0<em>json<\/em>\u00a0en tiempo de ejecuci\u00f3n, es importante que modifiquemos las propiedades de estos archivos para que sus\u00a0<em>build<\/em>\u00a0<em>actions<\/em>\u00a0sean\u00a0<em>EmbeddedResource<\/em>\u00a0y sus\u00a0<em>copy to output directory<\/em>\u00a0sean\u00a0<em>Copy if newer<\/em>.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" class=\"wp-image-781\" src=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=840\" sizes=\"auto, (max-width: 474px) 100vw, 474px\" srcset=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=469 469w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=150 150w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=300 300w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=768 768w, https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png 840w\" alt=\"\" width=\"474\" height=\"76\" data-attachment-id=\"781\" data-permalink=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/image-7\/\" data-orig-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png\" data-orig-size=\"840,136\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"image-7\" data-image-description=\"\" data-image-caption=\"\" data-medium-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=300\" data-large-file=\"https:\/\/jorgediegocrespo.files.wordpress.com\/2023\/03\/image-7.png?w=840\" \/><\/figure>\n<\/div>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"4_Anadir_informacion_de_los_json_a_la_configuracion_del_proyecto\"><\/span>4. A\u00f1adir informaci\u00f3n de los json a la configuraci\u00f3n del proyecto<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-adtags-visited=\"true\">Desde la llegada de\u00a0<em>dotNet MAUI<\/em>, podemos disfrutar del\u00a0<em>MauiAppBuilder<\/em>, en el que definir fuentes, servicios y configuraciones, entre otros\u2026 Lo que vamos a conseguir con este paso, es a\u00f1adir al\u00a0<em>Configuration<\/em>\u00a0de este\u00a0<em>builder<\/em>, la informaci\u00f3n del\u00a0<em>json<\/em>\u00a0a\u00f1adido en el paso anterior, dependiendo del entorno que estemos ejecutando. Para conseguirlo, a\u00f1adimos la siguiente funcionalidad a la clase\u00a0<em>MauiProgram<\/em><\/p>\n<pre class=\"wp-block-code\"><code>public static class MauiProgram\r\n{\r\n    public static MauiApp CreateMauiApp()\r\n    {\r\n        var builder = MauiApp.CreateBuilder();\r\n        builder\r\n            .UseMauiApp&lt;App&gt;()\r\n            .AddCustomConfiguration()\r\n            ...\r\n\r\n        return builder.Build();\r\n    }\r\n\r\n    private static MauiAppBuilder AddCustomConfiguration(this MauiAppBuilder builder)\r\n    {\r\n        var executingAssembly = Assembly.GetExecutingAssembly();\r\n        using var stream = executingAssembly.GetManifestResourceStream(GetEnvironmentSettings());\r\n        var configuration = new ConfigurationBuilder()\r\n            .AddJsonStream(stream)\r\n            .Build();\r\n        \r\n        builder.Configuration.AddConfiguration(configuration);\r\n        return builder;\r\n    }\r\n\r\n    private static string GetEnvironmentSettings()\r\n    {\r\n#if DEVELOPMENT\r\n        return \"MauiSettings.Settings.appsettings.Development.json\";\r\n#elif PREPRODUCTION\r\n        return \"MauiSettings.Settings.appsettings.Preproduction.json\";\r\n#else\r\n        return \"MauiSettings.Settings.appsettings.json\";\r\n#endif\r\n    }\r\n}<\/code><\/pre>\n<p data-adtags-visited=\"true\">Es importante destacar que, para a\u00f1adir la funcionalidad anterior, tenemos que a\u00f1adir los siguientes paquetes\u00a0<em>nugets<\/em>\u00a0a nuestro proyecto.<\/p>\n<ul>\n<li>Microsoft.Extensions.Configuration.Binder<\/li>\n<li>Microsoft.Extensions.Configuration.Json<\/li>\n<\/ul>\n<h3 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"5_Usar_settings\"><\/span>5. Usar settings<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p data-adtags-visited=\"true\">El \u00faltimo paso, ser\u00eda saber c\u00f3mo utilizar los\u00a0<em>settings<\/em>\u00a0que hemos creado. La forma de hacerlo es totalmente an\u00e1loga a c\u00f3mo se hace en\u00a0<em>asp.net<\/em>. No obstante, para aclararlo, voy a proseguir con el ejemplo que he creado.<\/p>\n<p data-adtags-visited=\"true\">Obviamente, los archivos de configuraci\u00f3n deben tener algo de informaci\u00f3n, adem\u00e1s de tener la misma estructura para todos los entornos.<\/p>\n<p data-adtags-visited=\"true\">Los archivos que he utilizado en el ejemplo son los siguientes, para\u00a0<em>development, preproduction y production<\/em>, respectivamente.<\/p>\n<pre class=\"wp-block-code\"><code>{\r\n  \"Info\": {\r\n    \"Environment\": \"DEV\",\r\n    \"Greettings\": \"Hello from development environment\"\r\n  }\r\n}<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>{\r\n  \"Info\": {\r\n    \"Environment\": \"PRE\",\r\n    \"Greettings\": \"Hello from preproduction environment\"\r\n  }\r\n}<\/code><\/pre>\n<pre class=\"wp-block-code\"><code>{\r\n  \"Info\": {\r\n    \"Environment\": \"PRO\",\r\n    \"Greettings\": \"Hello from production environment\"\r\n  }\r\n}<\/code><\/pre>\n<div>Anuncios<\/div>\n<div class=\"ata-slot-container-wrapper\">\n<div class=\"ata-slot-container\">\n<div id=\"sf-inline-ad-3\" class=\"ata-frame-wrapper\"><\/div>\n<\/div>\n<\/div>\n<div id=\"inline-ad-3__controls\" class=\"ata-controls\"><span id=\"inline-ad-3__complain-btn\" class=\"ata-controls__complain-btn\">INFORMA SOBRE ESTE ANUNCIO<\/span><span id=\"inline-ad-3__privacy-btn\" class=\"ata-controls__privacy-btn\">PRIVACIDAD<\/span><\/div>\n<p data-adtags-visited=\"true\">Para validar que las configuraciones se leen correctamente, he creado una\u00a0<em>View<\/em>\u00a0en la que muestro 2\u00a0<em>labels<\/em>, una para cada valor del archivo de configuraci\u00f3n.<\/p>\n<p data-adtags-visited=\"true\">Para asignar valor a esas\u00a0<em>labels<\/em>, recibo el\u00a0<em>IConfiguration<\/em>\u00a0de la\u00a0<em>app<\/em>\u00a0en el constructor y accedo a los valores que me interesan.<\/p>\n<pre class=\"wp-block-code\"><code>public partial class MainPage \r\n{\r\n    public MainPage(IConfiguration configuration)\r\n    {        \r\n        InitializeComponent();\r\n\r\n        lbEnvironment.Text = $\"Environment: {configuration.GetValue&lt;string&gt;(\"Info:Environment\")}\";\r\n        lbGreetings.Text = $\"Greetings: {configuration.GetValue&lt;string&gt;(\"Info:Greettings\")}\";\r\n    }\r\n}<\/code><\/pre>\n<p data-adtags-visited=\"true\">Con todo lo anterior, ya tendr\u00edamos un ejemplo creado en el que utilizar un\u00a0<em>appsettings<\/em>\u00a0por cada entorno, lo que har\u00e1 m\u00e1s sencillos nuestros desarrollos, pruebas y despliegues a cada uno de esos entornos.<\/p>\n<p data-adtags-visited=\"true\">He dejado el c\u00f3digo del ejemplo anterior en el siguiente repo:\u00a0<a href=\"https:\/\/github.com\/jorgediegocrespo\/MauiSettings\">https:\/\/github.com\/jorgediegocrespo\/MauiSettings<\/a><\/p>\n<\/div>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_87 ez-toc-wrap-center counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Tabla de contenidos<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 eztoc-toggle-hide-by-default' ><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/#1_Crear_configuraciones_de_solucion\" >1. Crear configuraciones de soluci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/#2_Crear_configuraciones_en_los_proyectos\" >2. Crear configuraciones en los proyectos<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/#3_Crear_json_de_configuracion\" >3. Crear json de configuraci\u00f3n<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/#4_Anadir_informacion_de_los_json_a_la_configuracion_del_proyecto\" >4. A\u00f1adir informaci\u00f3n de los json a la configuraci\u00f3n del proyecto<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/#5_Usar_settings\" >5. Usar settings<\/a><\/li><\/ul><\/nav><\/div>\n","protected":false},"excerpt":{"rendered":"<p><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":212,"featured_media":3271,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119,27],"tags":[],"class_list":["post-3268","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-net","category-cloud"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v28.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Settings por entorno en dotNet\u00a0MAUI | ENCAMINA<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Settings por entorno en dotNet\u00a0MAUI\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/\" \/>\n<meta property=\"og:site_name\" content=\"Por una nube sostenible\" \/>\n<meta property=\"article:published_time\" content=\"2023-03-23T07:28:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"804\" \/>\n\t<meta property=\"og:image:height\" content=\"509\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jorge Diego\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jorge Diego\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/settings-por-entorno-en-dotnet-maui\\\/\"},\"author\":{\"name\":\"Jorge Diego\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/#\\\/schema\\\/person\\\/db467d392da36cf2deba504fbb9eeb3e\"},\"headline\":\"Settings por entorno en dotNet\u00a0MAUI\",\"datePublished\":\"2023-03-23T07:28:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/settings-por-entorno-en-dotnet-maui\\\/\"},\"wordCount\":727,\"commentCount\":1,\"image\":{\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/wp-content\\\/uploads\\\/sites\\\/19\\\/2023\\\/03\\\/MAUI.jpg\",\"articleSection\":[\".NET\",\"Cloud\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/settings-por-entorno-en-dotnet-maui\\\/\",\"url\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/\",\"name\":\"Settings por entorno en dotNet\u00a0MAUI | ENCAMINA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/wp-content\\\/uploads\\\/sites\\\/19\\\/2023\\\/03\\\/MAUI.jpg\",\"datePublished\":\"2023-03-23T07:28:29+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/#\\\/schema\\\/person\\\/db467d392da36cf2deba504fbb9eeb3e\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/wp-content\\\/uploads\\\/sites\\\/19\\\/2023\\\/03\\\/MAUI.jpg\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/wp-content\\\/uploads\\\/sites\\\/19\\\/2023\\\/03\\\/MAUI.jpg\",\"width\":804,\"height\":509},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jorgediegocrespo.wordpress.com\\\/2023\\\/03\\\/07\\\/settings-por-entorno-en-dotnet-maui\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Settings por entorno en dotNet\u00a0MAUI\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/\",\"name\":\"Por una nube sostenible\",\"description\":\"C\u00f3mo no romper los l\u00edmites, c\u00f3mo crear una buena arquitectura y c\u00f3mo hacer un buen mantenimiento\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/#\\\/schema\\\/person\\\/db467d392da36cf2deba504fbb9eeb3e\",\"name\":\"Jorge Diego\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g\",\"caption\":\"Jorge Diego\"},\"description\":\"Soy un apasionado del desarrollo de software. Me encanta mi trabajo y mantenerme al d\u00eda haciendo cursos, investigando, realizando proyectos personales, etc. Principalmente trabajo con tecnolog\u00eda .NET. Asimismo, me interesa much\u00edsimo el mundo de la productividad personal. Adem\u00e1s del desarrollo tengo otras muchas aficiones: viajar, deporte, gastronom\u00eda, fotograf\u00eda\u2026y sobre todo, pasar tiempo con mi familia.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/por-una-nube-sostenible\\\/author\\\/jdiego\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Settings por entorno en dotNet\u00a0MAUI | ENCAMINA","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/","og_locale":"es_ES","og_type":"article","og_title":"Settings por entorno en dotNet\u00a0MAUI","og_url":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/","og_site_name":"Por una nube sostenible","article_published_time":"2023-03-23T07:28:29+00:00","og_image":[{"width":804,"height":509,"url":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg","type":"image\/jpeg"}],"author":"Jorge Diego","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Jorge Diego","Tiempo de lectura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#article","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/"},"author":{"name":"Jorge Diego","@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/#\/schema\/person\/db467d392da36cf2deba504fbb9eeb3e"},"headline":"Settings por entorno en dotNet\u00a0MAUI","datePublished":"2023-03-23T07:28:29+00:00","mainEntityOfPage":{"@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/"},"wordCount":727,"commentCount":1,"image":{"@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg","articleSection":[".NET","Cloud"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/settings-por-entorno-en-dotnet-maui\/","url":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/","name":"Settings por entorno en dotNet\u00a0MAUI | ENCAMINA","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#primaryimage"},"image":{"@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#primaryimage"},"thumbnailUrl":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg","datePublished":"2023-03-23T07:28:29+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/#\/schema\/person\/db467d392da36cf2deba504fbb9eeb3e"},"breadcrumb":{"@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#primaryimage","url":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg","contentUrl":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-content\/uploads\/sites\/19\/2023\/03\/MAUI.jpg","width":804,"height":509},{"@type":"BreadcrumbList","@id":"https:\/\/jorgediegocrespo.wordpress.com\/2023\/03\/07\/settings-por-entorno-en-dotnet-maui\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/"},{"@type":"ListItem","position":2,"name":"Settings por entorno en dotNet\u00a0MAUI"}]},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/#website","url":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/","name":"Por una nube sostenible","description":"C\u00f3mo no romper los l\u00edmites, c\u00f3mo crear una buena arquitectura y c\u00f3mo hacer un buen mantenimiento","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/#\/schema\/person\/db467d392da36cf2deba504fbb9eeb3e","name":"Jorge Diego","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4dc904b19ec9f1309fdccfd8a3c7520f3f89fe1efba301130bbc6ca84e3f6d85?s=96&d=mm&r=g","caption":"Jorge Diego"},"description":"Soy un apasionado del desarrollo de software. Me encanta mi trabajo y mantenerme al d\u00eda haciendo cursos, investigando, realizando proyectos personales, etc. Principalmente trabajo con tecnolog\u00eda .NET. Asimismo, me interesa much\u00edsimo el mundo de la productividad personal. Adem\u00e1s del desarrollo tengo otras muchas aficiones: viajar, deporte, gastronom\u00eda, fotograf\u00eda\u2026y sobre todo, pasar tiempo con mi familia.","url":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/author\/jdiego\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/posts\/3268","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/users\/212"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/comments?post=3268"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/posts\/3268\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/media\/3271"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/media?parent=3268"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/categories?post=3268"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/por-una-nube-sostenible\/wp-json\/wp\/v2\/tags?post=3268"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}