Este post surge a raíz de una duda que un alumno me preguntó hace unos días en uno de los cursos de campusMVP.

Cuando vas a ver las propiedades de un archivo en Visual Studio una de ellas es "Build Action", que controla el comportamiento del compilador respecto a dicho archivo. Las opciones disponibles se han ampliado en el caso de Visual Studio 2008 respecto a la versión anterior 2005, y son las que se ven en esta figura:

¿Para qué sirve cada una de ellas? Veamoslo:

· None: no hace nada con el archivo, como parece evidente :-)

· Compile: compila el contenido del archivo. Se usa para archivos con código fuente (.cs, .vb, etc..). Si quieres dejar fuera de la compilación a uno de estos archivos puedes ponerle 'None' como acción.

· Content: se usa para marcar archivos que deben ser distribuidos con la aplicación (y por lo tanto copiados a la carpeta de compilación) pero que son únicamente de contenido, no de código. Por ejemplo un archivo de configuración, un gráfico, un XML, etc...

· Embedded Resource: cuando un archivo (por ejemplo un gráfico) prefieres que no se distribuya como archivo independiente sino que se incluya dentro del ensamblado de proyecto como un recurso embebido. Esto hace que a la hora de compilar el proyecto el elemento se incluya dentro del ensamblado resultante (DLL o EXE) como un recurso que podremos utilizar mediante la API correspondiente. Por ejemplo, si añades un archivo "logo.jpg" a tu proyecto y le asignas este valor para la compilación, luego puedes leer el gráfico para usarlo del siguiente modo:

Bitmap miLogo = new Bitmap(this.GetType(), "logo.jpg");

· CodeAnalysisDictionary: esto sive para marcar un archivo XML como origen de diccionario de palabras personalizado. Esto tiene que ver con el análisis de código que hace Visual Studio (lo que antes se llamaba FxCop). Básicamente, cuando estableces las normas que debe cumplir tu código y le realizas un análisis para que te de advertencias, una de las opciones que puedes marcar es exigir que los nombres de métodos, campos y variables estén bien escritos (no tengan faltas de ortografía) para lo cual se usa un diccionario del mismo modo que en Word, por ejemplo. Si hay palabras que no están en el diccionario pero que tú consideras correctas (por ejemplo, el nombre de tu empresa) puedes incluirlas en un archivo de diccionario personalizado (como en Word, de hecho) que en este caso es un .xml que contiene una serie de palabras y está marcado con este atributo. Por ejemplo, puedes incluirle esto:

<?xml version="1.0" encoding="utf-8" ?>
<Dictionary>
   <Words>
       <Recognized>
           <Word>Krasis</Word>
           <Word>campusMVP</Word>
       </Recognized>
   </Words>
</Dictionary>

y así te reconoce estas dos palabras como válidas y no se quejará el analizador de código.

· ApplicationDefinition: Esta opción es nueva en VS2008 y se usa para identificar a los archivos de marcado XAML que contienen la definición de una aplicación WPF, esto es, un archivo XAML cuyo nodo raíz es <Application>. También se puede marcar un archivo .cs o .vb si la definición de la aplicación se hace directamente por código. Sólo puede haber un archivo en todo el proyecto marcado con esta acción de compilación.

· Page: También nueva y relacionada con WPF. Se usa para marcar archivos XAML de tipo página (normalmente con un archivo CodeBehind asociado) cuyo contenido se convierte a formato binario y se compila en un ensamblado. Suelen contener nodos de tipo Window, Page, FlowDocument o UserControl.

· Resource: similar a Embedded Resource porque incluye elementros como recursos en un ensamblado pero usado para WPF.

Espero que os resulte útil :-)

Escrito por un humano, no por una IA