2009-11-29 14 views
16

Tengo curiosidad por saber si necesito dos archivos de manifiesto que se crean cuando publico mi aplicación. Funciona cuando los elimino. En el caso de que se necesiten, he intentado incrustarlos (Proyecto> Aplicación> Incrustar manifiesto con la configuración predeterminada) pero siguen siendo externos.C# - ¿necesito archivos manifiestos?

Esos son: (appname).exe.manifest y (appname).application.

Respuesta

1

se necesita for the purpose of

indiquen las necesidades del montaje de versión y la identidad de seguridad, y todos los metadatos necesarios para definir el alcance de la asamblea y resolver referencias a recursos y clases

14

El archivo de manifiesto describe cómo debe ejecutarse su aplicación. De MSDN:

Cada conjunto, ya sea estático o dinámico, contiene una colección de datos que describe cómo los elementos en el conjunto se relacionan entre sí. El manifiesto de ensamblaje contiene estos metadatos de conjunto. Un manifiesto de ensamblaje contiene todos los metadatos necesarios para especificar los requisitos de versión del ensamblaje y la identidad de seguridad, y todos los metadatos necesarios para definir el alcance del ensamblaje y resolver las referencias a recursos y clases. El manifiesto de ensamblaje se puede almacenar en un archivo PE (un .exe o .dll) con el código de lenguaje intermedio de Microsoft (MSIL) o en un archivo PE independiente que contiene solo información de manifiesto de ensamblaje.

Así que eliminarlos es probablemente lo que no debe hacer, especialmente si desea que su aplicación se ejecute elevada de forma predeterminada en Vista y más allá.

Here son detalles de MSDN sobre el uso de la herramienta mt, que se utiliza para incrustar el manifiesto en su aplicación.

También tenga en cuenta a really interesting issue en relación con el almacenamiento en caché del manifiesto en Vista y más allá que se ve como una verdadera gotcha.

5

Además, cuando se utilizó VS2003 y desea que sus controles se parezcan más a la interfaz XP, el manifiesto contendrá los controles comunes con la versión apropiada 6.x que se utiliza junto con su aplicación, luego La interfaz gráfica de usuario obtiene una "apariencia agradable y actualizada de XP" en lugar de los viejos controles torpes de Windows 2000. Por esa razón, puede tener el manifiesto incrustado como un recurso para que no tenga que arrastrar un archivo de manifiesto (vale, es un archivo bastante pequeño) pero, no obstante, hace que la distribución de la aplicación sea más ordenada.

Y también, había un error en el tiempo de ejecución de .NET 1.1 (ahora corregido en 2.0+) donde si un manifiesto se utiliza en su aplicación no puede actualizar la GUI para darle más apariencia de XP. La solución en ese momento era llamar a Application.DoEvents antes de hacer un Application.Run (new form());

Ahora, con Vista y Win 7, el manifiesto se utiliza para especificar permisos elevados para evitar el UAC, lo que minimiza la posibilidad de que Vista/Win 7 aparezca un cuadro de diálogo de UAC.

+0

Por cierto, ¿cómo incrustarlos? – Petr

+3

No minimiza la posibilidad de que aparezca un cuadro de diálogo de UAC: lo obliga a aparecer siempre si especifica que su aplicación NECESITA privilegios de administrador (que la mayoría no tiene, así que no lo haga). – Zooba

+0

Me gustaría distribuir solo un archivo EXEcutable (y el archivo de configuración) ... entonces, ¿cómo se puede integrar el manifiesto? La opción en Aplicación no hace eso. – Petr

Cuestiones relacionadas