2008-09-28 12 views

Respuesta

100

De la documentación:

La propiedad BuildAction indica lo de Visual Studio hace con un archivo cuando se ejecuta una generación. BuildAction puede tener uno de varios valores:

Ninguno - El archivo no se incluye en el grupo de salida proyecto y no es compilado en el proceso de construcción. Un ejemplo es un archivo de texto que contiene la documentación , como un archivo Léame.

Compilar: el archivo está compilado en la salida de compilación. Esta configuración se usa para archivos de código.

Contenido: el archivo no está compilado, , pero se incluye en el grupo Salida de contenido . Por ejemplo, esta configuración es el valor predeterminado para un tipo de archivo web .htm u otro .

Recurso incrustado - Este archivo es incrustado en el proyecto principal compilar salida como un archivo DLL o ejecutable. Es normalmente utilizado para archivos de recursos.

+10

WPF tiene un montón de nuevos valores enumerados para esa propiedad .... – Gishu

+1

¡Interesante! Tengo VS2008 instalado, me pregunto por qué no aparecieron en mi documentación. –

+0

¿Qué pasa con el recurso PRI? – Yawar

824
  • Ninguno: El archivo no se incluye en el grupo de resultados del proyecto y no se compila en el proceso de construcción. Un ejemplo es un archivo de texto que contiene documentación, como un archivo Léame.

  • Compilar: El archivo está compilado en la salida de compilación. Esta configuración se usa para archivos de código.

  • Contenido: Le permite recuperar un archivo (en el mismo directorio que el conjunto) como una secuencia a través de Application.GetContentStream (URI). Para que este método funcione, se necesita un atributo personalizado AssemblyAssociatedContentFile el que Visual Studio agrega amablemente cuando marca un archivo como "contenido"

  • Embedded recursos: incrusta el archivo en un recurso manifiesto de ensamblado exclusiva.

  • Recursos(WPF solamente): incorpora el archivo en un compartidos (por todos los archivos en el montaje con ajuste similar) de recursos denominado AppName.g.resources manifiesto del ensamblado.

  • Página(sólo WPF): Se utiliza para compilar un archivo en xamlbaml. El baml se incrusta con la misma técnica que Resource (es decir, disponible como `AppName.g.recursos)

  • ApplicationDefinition(WPF solamente): Marque el archivo XAML/clase que define su aplicación. Se especifica el código subyacente con la x: Class = "Namespace.ClassName" y establecer el inicio formulario/página con StartupUri = "Window1.xaml"

  • SplashScreen(WPF solamente): Una imagen que se marca como SplashScreenis shown automatically when an WPF application loads, and then fades

  • DesignData: Compila ViewModels XAML para que controles de usuario se puede visualizar con datos de ejemplo en Visual Studio (utiliza tipos de simulacros)

  • DesignDataWithDesignTimeCreatableTypes: Compila ViewModels XAML para que controles de usuario se puede visualizar con datos de ejemplo en Visual Studio (uses actual types)

  • EntityDeploy: (Entity Framework): used to deploy the Entity Framework artifacts

  • CodeAnalysisDictionary: Un archivo XML que contiene custom word dictionary para spelling rules

+0

@Gishu: Page es para un cierto tipo de archivo XAML, pero la mayoría de los archivos XAML caen bajo él de todos modos. – user7116

+8

"** DesignData **" se utiliza para "Blendability", lo que le permite agregar datos basados ​​en WPF mark-up, que son, cuando se aplican las configuraciones correctas, y luego se muestran en Design Time. – PGallagher

+5

También tenga en cuenta que el Contenido se incluirá cuando se utilice la implementación con un clic, pero Ninguno no se mostrará si se selecciona "copiar si es más reciente". –

33

Página: toma el archivo XAML especificado y lo compila en BAML, e inserta ese resultado en la secuencia de recursos gestionados para su ensamblaje (específicamente AssemblyName.g.resources). Además, si tiene los atributos adecuados en el elemento raíz XAML en el archivo, creará un archivo blah.g.cs, que contendrá una clase parcial del "código subyacente" para esa página; esto básicamente involucra una llamada al BOLL goop para volver a hidratar el archivo en la memoria, y para establecer cualquiera de las variables miembro de su clase a los elementos ahora creados (por ejemplo, si pone x: Name = "foo" en un elemento , podrá hacer esto.foo.Background = Púrpura, o similar

ApplicationDefinition - similar a Page, excepto que se aplica onestep furthur, y define el punto de entrada para su aplicación que instanciará el objeto de su aplicación , ejecute ejecutar en él, que creará una instancia del tipo establecido por la propiedad StartupUri, y le dará a su ventana principal.

Además, para ser claros, esta pregunta en general está infinate en su conjunto de resultados; cualquiera puede definir BuildActions adicionales solo construyendo una tarea MSBuild. Si mira en% systemroot% \ Microsoft.net \ framework \ v {ver Sion} \ directorio, y mira el archivo Microsoft.Common.targets, deberías poder descifrar muchos más (ejemplo, con VS Pro y superior, hay una acción "Sombra" que te permite generar accesos privados para ayudar con la unidad probando clases privadas.

+0

espero que no te importe que copie partes de tu respuesta en la respuesta de Gishu, para obtener una respuesta de referencia más completa. –

5

En VS2008, la entrada doc que parece ser la más útil es:

de Windows Presentation Foundation construcción de una aplicación WPF (WPF)

ms-help: //MS.VSCC.v90/MS.MSDNQTR .v90.en/wpf_conceptual/html/a58696fd-bdad-4b55-9759-136dfdf8b91c.htm

ApplicationDefinition Identifica el archivo de marcado XAML que contiene la definición de aplicación (un archivo marcado XAML cuya raíz es el elemento de aplicación). ApplicationDefinition es obligatorio cuando Install es verdadero y OutputType es winexe.Una aplicación WPF y, en consecuencia, un proyecto MSBuild solo puede tener una ApplicationDefinition.

Página Identifica un archivo de marcado XAML cuyo contenido se convierte a un formato binario y se compila en un conjunto. Los elementos de página normalmente se implementan junto con una clase de código subyacente.

Los elementos de página más comunes son los archivos XAML cuyos elementos de nivel superior son uno de los siguientes:

Window (System.Windows..::.Window). 

Page (System.Windows.Controls..::.Page). 

PageFunction (System.Windows.Navigation..::.PageFunction<(Of <(T>)>)). 

ResourceDictionary (System.Windows..::.ResourceDictionary). 

FlowDocument (System.Windows.Documents..::.FlowDocument). 

UserControl (System.Windows.Controls..::.UserControl). 

Recursos identifica un archivo de recursos que se compila en un conjunto de aplicaciones. Como se mencionó anteriormente, UICulture procesa elementos de recursos.

Contenido Identifica un archivo de contenido que se distribuye con una aplicación. Los metadatos que describen el archivo de contenido se compilan en la aplicación (utilizando AssemblyAssociatedContentFileAttribute).

23

VS2010 tiene una propiedad para 'Accion de compilación', y también para 'Copiar al directorio de salida'. Por lo tanto, una acción de 'Ninguno' aún se copiará en el directorio de compilación si la propiedad de copia está configurada en 'Copiar si es más nuevo' o 'Copiar siempre'.

Así que una Acción de generación del 'Contenido' debería reservarse para indicar el contenido se accede a través de 'Application.GetContentStream'

he utilizado la 'estructura Acción' configuración de 'Ninguno' y 'Copia de salida Direcotry La configuración de 'Copiar si es más reciente' para algunos .config vinculados externamente incluye.

G.

+0

Gracias por esto. Sin embargo, estoy un poco confundido sobre cómo/dónde hago esto. Idealmente, me gustaría simplemente "incluir" mi carpeta "Subir" y todos los archivos secundarios se incluirán en la publicación. – SamJolly

+0

Esto se aplica a las propiedades de un elemento individual en el explorador de objetos, que verá en la pestaña de propiedades cuando seleccione un elemento o haga clic con el botón derecho y seleccione propiedades. Por lo que quiere, creo que solo tiene que agregar un elemento existente cuando hace clic derecho en el proyecto. Por cierto, el botón para guardar el cuadro de diálogo Agregar elemento existente tiene un menú desplegable que le permite agregarlo como un enlace. Aún puede tener que agregar los elementos dentro de la carpeta. –

4

¿Qué tal this page de Microsoft Connect (explicando las DesignData y DesignDataWithDesignTimeCreatableTypes) tipos. Citando:

A continuación se describen las dos acciones de compilación para archivos de datos de muestra. archivos

Datos de la muestra .xaml deben asignarse una de las acciones más adelante construir:

DesignData: tipos de datos muestra serán creados como tipos de imitación. Utilice esta acción de compilación cuando los tipos de datos de muestra no se puedan crear o tengan propiedades de solo lectura para las que desee definir valores de datos de muestra.

DesignDataWithDesignTimeCreatableTypes tipos de datos: muestra serán creados usando los tipos definidos en el archivo de datos de la muestra. Utilice esta acción de compilación cuando los tipos de datos de muestra se puedan crear utilizando su constructor vacío predeterminado.

No así que es increíblemente exhaustivo, pero al menos da una pista. This MSDN walkthrough también da algunas ideas. No sé si estas acciones de compilación también son aplicables para proyectos que no sean de Silverlight.

3
  • falsificaciones: parte del Microsoft falsificaciones (Unidad de aislamiento de prueba) Marco. No disponible en todas las versiones de Visual Studio.Las falsificaciones se utilizan para respaldar las pruebas unitarias en su proyecto, lo que le ayuda a aislar el código que está probando al reemplazar otras partes de la aplicación con talones o cuñas. Más aquí: https://msdn.microsoft.com/en-us/library/hh549175.aspx
Cuestiones relacionadas