Thursday, 10 March 2016

Advanced text replacements in Visual Studio using RegEx

This is just a quick tip about making advanced text replaments in Visual Studio.

You are probably used to the "Replace in Files" tool accessible through the Ctrl+Shift+H shortcut (see below). As you already know, you can make text replacements in multiple files, entire solutions, etc.


Using Regular Expressions (you can test them first using this site), you can make quite complex replacements that are really handy when refactoring code. Especially when those changes appear in many different places.

For instance, let's say you were accessing attributes of a class all around your code. Something like:

                        nd.Attributes["ATTRIB_NAME"].Value = "ATTRIB_VALUE";                        

And that you want to change that, replacing with a call to a method. Something like:

nd.SetAttributeValue("ATTRIB_NAME", "ATTRIB_VALUE");

First, you need a way to find all appearances of something similar, no matter what's inside those strings (ATTRIB_NAME, ATTRIB_VALUE). That can be easily achieved with the following "Find What" argument:

.Attributes\["(.*)"\].InnerText = (.*);

It includes the (.*) RegEx, which basically matches any string. By using the brackets (), it will also instruct Visual Studio to tag whatever it matches the RegEx in each find-and-replace operation. That way, we can use that values in the "Replace With" argument:

.SetAttributeValue("$1", $2);

By using $1..$n, we specify found strings tagged in the "Find What" parameter. That way, the resulting replacement will include what we want, and re-use whatever was found in the original string. 

This page includes more information about using RegEx in Visual Studio.

Thursday, 4 February 2016

C# Intellisense making wrong suggestions inside foreach statements

There’s a bug in Visual Studio that has been annoying me for quite a long time: sometimes, Intellisense doesn’t work well inside “foreach” statements in C#. It makes suggestions, but the wrong ones.

For example, if I start writing “foreach (System.Xm….)” with the intention to write “System.Xml.XmlNode”, Intellisense only offers stupid options like System.FromXml that make no sense.

I’ve realized that this only happens if the parenthesis are closed. So, if you delete the closing parenthesis before start typing, Intellisense works as expected. 


I´m sure there are other ways to fix this, but for now unchecking the “Automatic brace completion” option (see below) will suffice. 

In fact, it’s an option I never liked, so two birds with one stone… J


Sunday, 10 January 2016

POCO QUE GANAR, MUCHO QUE PERDER

El otro día cenando con amigos, recordé esta anécdota. Fue en una reunión donde la empresa en la que trabajaba, proponía una serie de desarrollos tecnológicos para mejorar determinado sistema público (me ahorro deciros cual). 

Tras la reunión, la respuesta del funcionario del gobierno, responsable del departamento en cuestión, fue desoladora y muy esclarecedora:

"Lo que proponéis suena fenomenal. El sistema sería mucho más eficiente y a medio-largo plazo implicaría un ahorro muy notable. PERO es un cambio, y como todos los cambios requeriría de un periodo de adaptación que traerá problemas. Habrá errores y fricciones iniciales, y aunque pasado un tiempo todo sería mucho mejor que ahora, lo cierto es que durante ese periodo no recibiré más que quejas. En definitiva: sería crear problemas donde no los hay. El sistema actual no es eficiente, pero funciona y nadie se queja. Nadie me exige mejorarlo y nadie me va a felicitar por hacerlo. Así que sintiéndolo mucho, no vamos a ir adelante. Simplemente tenemos poco que ganar, y mucho que perder."

Aquello me dejó perplejo. Pero cojones, el tío tenía razón... ¿Para qué demonios se iba a meter él en semejante berenjenal, si nadie se lo pide, ni nadie le va a felicitar por ello? Simplemente tenía poco que ganar, y mucho que perder.

Y al darme cuenta de que TODO el sector público se gestiona con una mentalidad parecida, entendí que mientras no modifiquemos al sector funcionarial, no hay nada que hacer.

Mientras no se les contrate en base a sus méritos en el trabajo (a lo largo de toda su vida laboral y no con un único examen agónico), mientras no se les motive con posibilidades de promoción (en lugar de darles puestos estancos en los que solo pueden promocionar a base de más oposiciones absurdas), mientras no se les exija rendir y mejorar las cosas (en lugar de fomentar la apatía y la pasividad), mientras no se les premie cuando hagan bien las cosas y mientras no se les despida cuando hagan mal su trabajo (para dejar esa plaza a alguien que la merezca más), no hay nada que hacer. Y conste que en esto del despido estoy de acuerdo en que quizá las autoridades del estado (policía, jueces, inspectores, etc) deben quedar aparte.


Pero mientras no cambiemos todo eso, pueden recortar en lo que quieran, que no servirá de nada. Por cada euro que recorten, tiraremos 10 más a la basura...

¿Y saben qué? El 85% de los políticos actuales son funcionarios de carrera. Imaginen las ganas que tienen de cambiar esto...

Wednesday, 16 December 2015

Changing UI Language in Visual Studio 2015

For some reason, I usually make the same mistake, over and over again: I install Visual Studio 2015 Community Edition using the web link provided by Microsoft. The problem with that is that the web automatically detects your system’s language, and downloads the corresponding version of VS. In my case, my PCs are usually in Spanish, so VS is downloaded and installed in Spanish. And I usually don’t realize until it’s too late…

I hate using certain apps in Spanish, and VS is one of those. I prefer using it in English, and as the installation takes ages, I decided to switch the UI language instead of uninstalling and installing all over again (which would be cleaner, I guess).

First problem is that VS only comes with one language: the one you chose when downloading. So, no English available…


So, I decided to search for a language pack, which is quite easy. The second problem is that the official MS link for that always seems to download the Spanish language pack. No matter what. Please note the installer says “Paquede de idioma 2015 – ESN” instead of “2015 Language Pack – ENU”:



Third problem is that if you try to install the Spanish language pack, it won’t detect that VS already includes that language, and will go through the whole installation process (and wasting hard drive space, I assume). It’s completely useless, as VS already has that language, and as a result VS Internationalization Options will remain the same.

So, if you want to download the proper lang pack, use this other link instead. It will provide you with the correct installer. After using it, now everything is working as expected, and it's installing the proper Language Pack – ENU.



After English UI is properly up and running, you can proceed to uninstall the previous Spanish language pack, if you want to.