{"id":424,"date":"2026-03-08T18:42:45","date_gmt":"2026-03-08T18:42:45","guid":{"rendered":"https:\/\/hackcuba.net\/?p=424"},"modified":"2026-03-08T18:42:45","modified_gmt":"2026-03-08T18:42:45","slug":"cacharreando-visual-studio-net-i","status":"publish","type":"post","link":"https:\/\/hackcuba.net\/?p=424","title":{"rendered":"Cacharreando Visual Studio .NET (I)"},"content":{"rendered":"\n<p>Muchas veces existen opciones en alg\u00fan programa con el que trabajamos que nunca llegamos a utilizar, en parte porque las desconocemos. El Visual Studio es un Entorno Integrado de Desarrollo (IDE por sus siglas en ingl\u00e9s), que posee una gran cantidad de secretos que deber\u00edamos descubrir para sacarle mayor <\/p>\n\n\n\n<!--more-->\n\n\n\n<p>provecho. En dos art\u00edculos me propongo acercarlos a algunas facilidades del VS que posiblemente ya algunos conozcan -me disculpan en tal caso. Por otra parte supongo que han tenido un acercamiento a esta herramienta y son algo m\u00e1s que usuarios novatos. Ya para empezar, cuando me refiera a un documento dentro de la Ayuda del Visual Studio, lo hago espec\u00edficamente sobre la que viene con la versi\u00f3n del 2005 (no estoy seguro si funcione en la del 2003).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">M\u00e9todos Abreviados del Teclado::<\/h2>\n\n\n\n<p>Es casi incre\u00edble pero existen m\u00e1s 450 m\u00e9todos abreviados de teclado predeterminados en Visual Studio. Para conocerlos, estas son las coordenadas: <em>Tools<\/em> \u00bb <em>Options\u2026<\/em> \u00bb <em>Environment<\/em> \u00bb <em>KeyBoard<\/em>. Podemos modificarlos para asignar una nueva combinaci\u00f3n, aunque se recomienda mantener la compatibilidad e impedir futuros dolores de cabeza cuando trabajemos en otra m\u00e1quina.<\/p>\n\n\n\n<p>Familiarizarse con los m\u00e9todos abreviados toma su tiempo y al principio nos puede parecer tedioso, pero brinda buenos resultados al final, cuando nos ahorra tiempo y nos evita tener que levantar las manos del teclado. La siguiente tabla tiene algunos importantes:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>M\u00e9todo abreviado de teclado<\/strong><\/td><td><strong>Comando<\/strong><\/td><\/tr><tr><td><kbd>Ctrl+K+C<\/kbd><strong> \/ <\/strong><kbd>Ctrl+K+U<\/kbd><\/td><td>Activar\/Desactivar comentarios en las l\u00edneas seleccionadas.<\/td><\/tr><tr><td><kbd>Ctrl+M+O<\/kbd><strong> \/ <\/strong><kbd>Ctrl+M+L<\/kbd><\/td><td>Colapsar\/Expandir todo el texto.<\/td><\/tr><tr><td><kbd>F12<\/kbd><\/td><td>Ir a la definici\u00f3n de una variable, objeto o funci\u00f3n seleccionado.<\/td><\/tr><tr><td><kbd>Ctrl+May\u00fas+7<\/kbd><strong> \/<\/strong><kbd> Ctrl+May\u00fas+8<\/kbd><\/td><td>Se desplaza r\u00e1pidamente hacia delante y hacia atr\u00e1s en la pila para ir a la definici\u00f3n.<\/td><\/tr><tr><td><kbd>May\u00fas+F12<\/kbd><\/td><td>Encuentra todas las referencias de una funci\u00f3n o una variable.<\/td><\/tr><tr><td><kbd>May\u00fas+Alt+Intro<\/kbd><\/td><td>Alterna entre Pantalla Completa y Pantalla Normal.<\/td><\/tr><tr><td><kbd>Alt+S<\/kbd><\/td><td>Muestra el di\u00e1logo de <em>Find and Replace<\/em>.<\/td><\/tr><tr><td><kbd>May\u00fas+Alt+Intro<\/kbd><\/td><td>Alterna entre el modo de pantalla completa y el modo normal.<\/td><\/tr><tr><td><kbd>Ctrl+F<\/kbd><\/td><td>Una b\u00fasqueda r\u00e1pida.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>Puede ser que alguno de los anteriores no funcione; en tal caso deber\u00e1s editarlos por ti mismo.<br>Para un listado m\u00e1s completo, si tienes el MSDN, ver: <a href=\"ms-help:\/\/MS.VSCC.v80\/MS.MSDN.v80\/MS.VisualStudio.v80.en\/dv_vssettings\/html\/838ff501-5760-4a11-8057-2c1587fec43d.htm\" target=\"_blank\" rel=\"noreferrer noopener\">Brief Specific Shortcut Keys.<\/a><br>Para ver como trabajar con <em>shortcuts<\/em> ver: <a href=\"ms-help:\/\/MS.VSCC.v80\/MS.MSDN.v80\/MS.VisualStudio.v80.en\/dv_vssettings\/html\/d2774be2-60a4-4d6f-95f1-79d0d9e55b56.htm\" target=\"_blank\" rel=\"noreferrer noopener\">How to: Work with Shortcut Key Combinations.<\/a><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><em>Splitter Bar<\/em>: ver en dos partes el c\u00f3digo::<\/h2>\n\n\n\n<p>Es muy \u00fatil poder ver en la pantalla dos partes del mismo documento, pues podemos compararlos de una manera muy pr\u00e1ctica. Piensa en dos m\u00e9todos que se relacionen como <em>write<\/em> y <em>read<\/em>, pues vas a leer en el mismo formato en que escribistes. En tales casos es \u00fatil dividir el \u00e1rea de trabajo en dos.<\/p>\n\n\n\n<p>Exactamente encima del <em>scroll<\/em> de la derecha hay un <em>splitter<\/em> escondido; si lo movemos hacia abajo nos mostrar\u00e1 el mismo archivo de c\u00f3digo doble, una copia encima de la otra. En la siguiente figura nos llevaremos mejor la idea:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"373\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660011.png\" alt=\"\" class=\"wp-image-427\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660011.png 512w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660011-300x219.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<p>Vale mencionar que el <em>splitter<\/em> introducido s\u00f3lo es v\u00e1lido para el archivo donde se utiliz\u00f3; los dem\u00e1s se seguir\u00e1n viendo en el m\u00e9todo est\u00e1ndar.<\/p>\n\n\n\n<p>Esta opci\u00f3n aparece tambi\u00e9n en el men\u00fa <em>Window<\/em> como <em>Split<\/em>. El mismo men\u00fa tiene otras utilidades interesantes, por ejemplo podemos crear una nueva pesta\u00f1a, al estilo Firefox, donde ver el archivo de c\u00f3digo actual (es la primera opci\u00f3n <em>New Window<\/em>). Esto no parece muy pr\u00e1ctico, pues al final de cuentas es lo mismo repetido, pero al combinarlo con la opci\u00f3n <em>New Vertical Tab Group<\/em> (un nuevo grupo de pesta\u00f1as), tendremos el mismo c\u00f3digo, uno al lado del otro. De esta forma podemos tener varios archivos en diferentes grupos. En la pr\u00f3xima figura lo veremos mejor:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"373\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660012.png\" alt=\"\" class=\"wp-image-426\" srcset=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660012.png 512w, https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660012-300x219.png 300w\" sizes=\"auto, (max-width: 512px) 100vw, 512px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Ver s\u00f3lo el c\u00f3digo::<\/h2>\n\n\n\n<p>Con la combinaci\u00f3n de teclas <kbd>Shift+Alt+Enter<\/kbd> podemos tener el c\u00f3digo en pantalla completa. Inclusive desaparece la barra de tareas, la de t\u00edtulo, las barras de herramientas y los laterales. Sin duda es una idea pr\u00e1ctica que nos deja tener mayor espacio de trabajo. Es muy \u00fatil cuando sabemos que s\u00f3lo vamos a tirar l\u00edneas de c\u00f3digo y no trabajar con cuestiones de dise\u00f1o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Ajuste de L\u00ednea::<\/h2>\n\n\n\n<p>En el Notepad tenemos una opci\u00f3n de autoajustar el texto para que quepa en la pantalla, pues muchas veces se nos pierden las l\u00edneas. En VS tenemos el mismo problema cuando escribimos una instrucci\u00f3n muy larga. En el men\u00fa <em>Edit<\/em> \u00bb <em>Advanced<\/em> \u00bb <em>Word Wrap<\/em> podemos resolver este problema de forma id\u00e9ntica a la del Notepad. Para algunos es una opci\u00f3n poco est\u00e9tica; en mi opini\u00f3n es s\u00f3lo acostumbrarse.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Recortes de C\u00f3digo (<em>Code Snippets<\/em>)::<\/h2>\n\n\n\n<p>Existen patrones de c\u00f3digo que usamos frecuentemente, por ejemplo:<\/p>\n\n\n\n<p><code>for (int k = 0; k&lt;10; k++){<br><\/code><em>\/\/ &#8230;<\/em><br><code>}<\/code><\/p>\n\n\n\n<p>Necesitamos escribir este c\u00f3digo una y otra vez. Deber\u00edamos tenerlo en alg\u00fan lugar donde lo podamos usar sin recurrir al suplicio repetitivo anterior. Qu\u00e9 creen si lo ponemos en el Cuadro de Herramientas (<em>Toolbox<\/em>), simplemente seleccion\u00e1ndolo y arrastr\u00e1ndolo hasta el mismo. Si realizamos un nuevo grupo dentro del cuadro (click derecho <em>Add Tab<\/em>) llamado <em>Recortes<\/em>, estar\u00e1n m\u00e1s organizados. Ser\u00eda como trabajar con <em>labels<\/em> o botones, pero en este caso ser\u00edan l\u00edneas de c\u00f3digo. Cada vez que lo necesitemos ponemos el caret (<kbd>|<\/kbd>) en la posici\u00f3n del c\u00f3digo donde ir\u00eda y doble click con el <em>Snippet<\/em> (o recorte). Para darte algunas ideas de patrones, puedes incluir las siguientes:<\/p>\n\n\n\n<p><code>string tmp =\"\";<br>Console.Write(\"\");<br>Console.WriteLine(\"\") ;<br>Console.Write();<\/code><\/p>\n\n\n\n<p>Podemos dejar el <em>ToolBox<\/em> fijo para tenerlo m\u00e1s a mano. Tambi\u00e9n es buena idea tener varios grupos de <em>snippets<\/em> para usarlo en dependencia del tipo de proyecto en que estemos trabajando, pues <code>Console.Read<\/code> no tiene mucho sentido en aplicaciones Windows.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"207\" height=\"199\" src=\"https:\/\/hackcuba.net\/wp-content\/uploads\/2026\/03\/0x660013.png\" alt=\"\" class=\"wp-image-425\"\/><\/figure>\n\n\n\n<p>Otra forma m\u00e1s profesional (de hecho es mejor que la anterior, por eso la dej\u00e9 para el final), es usar los <em>snippets<\/em> que vienen con VS. En cualquier lugar del documento, al dar click derecho tenemos las opciones <em>Insert Snippet&#8230;<\/em> y <em>Surround With&#8230;<\/em><\/p>\n\n\n\n<p>La primera nos inserta un <em>snippet<\/em> que podremos completar con la tecla <kbd>Tab<\/kbd> para movernos por todos sus valores que necesitan ser especificados. Si insertamos un <em>snippet <\/em><code>for<\/code> tendremos que actualizar solamente el nombre del valor a iterar, generalmente <code>i<\/code> y adem\u00e1s el l\u00edmite de la iteraci\u00f3n como un <code>cadena.Length<\/code>.<\/p>\n\n\n\n<p>La segunda opci\u00f3n -me refiero a <em>Surround With&#8230;<\/em>&#8211; permite, dado un tramo de c\u00f3digo seleccionado, convertirlo en el cuerpo de un <em>snippet<\/em>. Si escogemos una l\u00ednea como <code>Console.WriteLine(\"H3llo World\");<\/code> y usamos el <em>snippet<\/em> <code>if<\/code> aparecer\u00e1 algo como lo siguiente:<\/p>\n\n\n\n<p><code>if(true){<br>&nbsp;&nbsp;Console.WriteLine(\"Hello World\");<br>}<\/code><\/p>\n\n\n\n<p>Para crea nuestros propios <em>snippet<\/em> y usarlos de la manera anterior les aconsejo ver:<a href=\"ms-help:\/\/MS.VSCC.v80\/MS.MSDN.v80\/MS.VisualStudio.v80.en\/dv_vseditor\/html\/0dcaae11-39cf-4463-9c90-2494321251c2.htm\" target=\"_blank\" rel=\"noreferrer noopener\"> C\u00f3mo crear Snippets.<\/a> Se torna un poco complicado, pues hay que declararlas en XML.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Modificador \/ <em>resetuserdata<\/em>::<\/h2>\n\n\n\n<p>Esta opci\u00f3n permite restablecer Visual Studio a su estado de f\u00e1brica, en caso de que alguna vez se haya ejecutado en un estado da\u00f1ado del que no pueda recuperarse. Desventaja: perder\u00e1 toda la configuraci\u00f3n y personalizaciones del entorno si usa este modificador. S\u00f3lo debemos usar este modificador como \u00faltima alternativa en caso de experimentar un problema con el entorno grave y debe asegurarse de realizar copias de seguridad de la configuraci\u00f3n del entorno, que exportar\u00e1 antes de usar este modificador.<\/p>\n\n\n\n<p>Para usar este modificador, procedemos:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Cierre todas las instancias de Visual Studio 2005.<\/li>\n\n\n\n<li>Haga clic en <em>Inicio<\/em> y seleccione <em>Ejecutar&#8230;<\/em><\/li>\n\n\n\n<li>Escriba <kbd>devenv.exe \/resetuserdata<\/kbd>.<\/li>\n<\/ol>\n\n\n\n<p>Este comando tardar\u00e1 un par de minutos en ejecutarse a medida que Visual Studio se borra y restablece su estado original. Puede abrir el Administrador de tareas en este punto para comprobar si el proceso <em>devenv.exe<\/em> est\u00e1 a\u00fan en ejecuci\u00f3n. Una vez que haya finalizado, podr\u00e1 reiniciar Visual Studio. A continuaci\u00f3n, volver\u00e1 a recibir el saludo de inicio, como si estuviera ejecutando Visual Studio por primera vez en el equipo. Nunca he realizado este proceso, pero en caso de ver al IDE dando bateos, creo que es mejor opci\u00f3n que reinstalarlo.<\/p>\n\n\n\n<p>Antes de terminar esta primera entrega, vamos a salirnos un poco del VS para tratar algo sobre buenas pr\u00e1cticas de programaci\u00f3n.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Optimizar el trabajo con cadenas de texto::<\/h2>\n\n\n\n<p>La clase <code>System.Text.StringBuilder<\/code> proporciona m\u00e9todos m\u00e1s eficientes para concatenar objetos <em>string<\/em>, porque crea un buffer de tama\u00f1o suficiente para contener la cadena original y poder crecer en el futuro. Si tenemos idea en un principio de cuanto ser\u00eda el tama\u00f1o final, podemos instanciar la clase con ese valor. Se recomienda usar <code>StringBuilder<\/code> cuando vamos a concatenar m\u00e1s de 5 cadenas. Imag\u00ednense el caso de alg\u00fan m\u00e9todo recursivo que va agregando informaci\u00f3n a la cadena resultado de todo el proceso; ser\u00eda muy conveniente usar <code>StringBuilder<\/code>. Ejemplo:<\/p>\n\n\n\n<p>En Visual Basic:<br><code>Dim sResultado as String = \"Nombre del usuario: \" &amp; sUserName &amp; \".\"<\/code><\/p>\n\n\n\n<p>En C#:<br><code>string sResultado = \" Nombre del usuario: \" + sUserName + \".\";<\/code><\/p>\n\n\n\n<p>Si usamos <code>StringBuilder<\/code>:<\/p>\n\n\n\n<p>En Visual Basic:<br><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: vb; title: ; notranslate\" title=\"\">\nImports System.Text\nDim sbResultado As StringBuilder\nsbResultado = New StringBuilder(&quot;Nombre del usuario: &quot;)\nsbResultado.Append(sUserName)\nsbResultado.Append(&quot;.&quot;)\nDim sResultado As String = sbResultado.ToString\n<\/pre><\/div>\n\n\n<p><br>En C#:<br><\/p>\n\n\n<div class=\"wp-block-syntaxhighlighter-code \"><pre class=\"brush: csharp; title: ; notranslate\" title=\"\">\nusing System.Text;\nStringBuilder sbResultado = new StringBuilder(&quot;This is a message&quot;);\nsbResultado.Append(sUserName);\nsbResultado.Append(&quot;.&quot;);\nstring sResultado = sbResultado.ToString();\n<\/pre><\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones::<\/h2>\n\n\n\n<p>Para muchos, Visual Studio es la herramienta l\u00edder del mercado para desarrolladores; familiarizarse con \u00e9l y sacarle el mayor provecho es lo que nos har\u00e1 estar seguros de ello. De m\u00e1s est\u00e1 decir que si conoces alguna otra sugerencia o truco para trabajar con \u00e9l, me escribas para compartirla con el resto de la comunidad.<\/p>\n\n\n\n<p>Env\u00edenme comentarios sobre cualquier cuesti\u00f3n del art\u00edculo que les motive a: <a href=\"mailto:blackhat4all@gmail.com\">blackhat4all@gmail.com<\/a>. Para la pr\u00f3xima entrega estaremos hablando un poco de Visual Studio 2008 o <em>Orcas<\/em>; sobre sus principales caracter\u00edsticas y potencialidades. Adem\u00e1s, tocaremos el IntelliSense del VS 2005 y c\u00f3mo configurarlo. Sin m\u00e1s me despido.<\/p>\n\n\n\n<p>END SUB&#8230;}&#8230;END&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Para saber m\u00e1s&#8230;<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"http:\/\/www.microsoft.com\/spanish\/msdn\/vs2005\/default.mspx\" target=\"_blank\" rel=\"noreferrer noopener\">VS 2005 en Microsoft.com<\/a><\/li>\n\n\n\n<li><a href=\"http:\/\/www.microsoft.com\/spanish\/msdn\/articulos\/archivo\/190207\/voices\/bb245788.mspx\" target=\"_blank\" rel=\"noreferrer noopener\">Sugerencias y trucos para el IDE de Visual Studio 2005 en Microsoft.com<\/a><\/li>\n<\/ul>\n\n\n\n<p>Escrito por Krlo [<a href=\"mailto:blackhat4all@gmail.com?subject=Para\u00a0Krlo\">blackhat4all@gmail.com<\/a>]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Muchas veces existen opciones en alg\u00fan programa con el que trabajamos que nunca llegamos a utilizar, en parte<\/p>\n","protected":false},"author":2,"featured_media":428,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18,36],"tags":[58,38,141],"class_list":["post-424","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-programacion","category-proyecto-blackhat","tag-programacion","tag-proyecto-blackhat","tag-visual-studio-net"],"_links":{"self":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/424","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=424"}],"version-history":[{"count":1,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions"}],"predecessor-version":[{"id":429,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/posts\/424\/revisions\/429"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=\/wp\/v2\/media\/428"}],"wp:attachment":[{"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=424"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=424"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hackcuba.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=424"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}