visual studio publicar net chrome aplicacion c# deployment oneclick

c# - studio - Problema de implementación de VS 2010 One Click "La validación de la aplicación no tuvo éxito. No se puede continuar "



publicar aplicacion windows forms (1)

No puedo encontrar ninguna información al respecto.

Hay mucha información sobre esto, solo google el mensaje de error. La consulta correcta es "La referencia en el manifiesto no coincide con la identidad del conjunto descargado" y encontrará muchos éxitos buenos que describen soluciones.

Trataré de hacer más que solo agregar otro hit de Google y explicar el problema subyacente. Nadie explica qué está yendo realmente mal. Y es de esperar que ayude a cubrir los casos difíciles de diagnosticar también. El problema es una propiedad muy poco documentada de un archivo ejecutable, el manifiesto de la aplicación . Tenga en cuenta que la palabra "manifestar" significa muchas cosas en Windows, el manifiesto de la aplicación es distinto del manifiesto ClickOnce.

El manifiesto de la aplicación agrega configuración adicional a un archivo ejecutable. Son muy importantes desde Vista, necesita uno para marcar su programa para que sea compatible con UAC. Varios otros usos, necesita entradas para usar COM libre de registro, alterar la forma en que Windows busca DLL dependientes, deshabilitar las calzas compatibles con Windows o decirle a Windows 8.1 que deje de mentir sobre su número de versión.

Un problema relevante para su problema es que hay dos formas de proporcionar el manifiesto de un ejecutable. La forma preferida es insertarlo dentro del archivo ejecutable. Incrustado como un recurso no administrado . Esta es la forma en que se hace cuando se crea una aplicación Winforms con la configuración predeterminada. El compilador C # o VB.NET incrusta uno predeterminado. O uno específico que agregó a su proyecto con la plantilla del elemento Archivo de Manifiesto de Aplicación. Incrustarlo es preferible porque limita la cantidad de formas en que el manifiesto podría perderse o modificarse. Y es lo que Windows buscará primero.

O puede proporcionarse como un archivo separado, debe llamarse yourapp.exe.manifest y almacenarse en el mismo directorio que yourapp.exe. Esta es la forma en que lo hará el asistente de publicación, puede encontrarlo nuevamente en la carpeta de publicación y se copiará en la máquina de destino junto con el ejecutable.

Quizás puedas oler el problema que se avecina, dos manifiestos y no coinciden. System.Deployment sigue las reglas de Windows y primero busca un manifiesto incrustado. Encontrará el predeterminado que incrusta el compilador de C #. Comprueba la identidad del ensamblado contra la declarada en el manifiesto ClickOnce . Y si no coincide entonces, kaboom con "Referencia en el manifiesto no coincide con la identidad del conjunto descargado". Cree que el archivo ejecutable fue reemplazado mientras viajaba desde su servidor web a la máquina del usuario por un ataque de hombre en el medio.

Comienza a diagnosticar este problema mirando primero los recursos no administrados incrustados dentro de su archivo ejecutable (Designer.exe), los que System.Deployment observa primero. En Visual Studio, use Archivo + Abrir + Archivo y seleccione Designer.exe desde la carpeta de publicación. Probablemente se parecerá a esto:

La entrada RT_MANIFEST con ID # 1 es el manifiesto de aplicación incrustado. Puede hacer doble clic para ver pero obtendrá un volcado hexadecimal del contenido. Más fácil es hacer clic derecho, Exportar y especificar un nombre de archivo .txt para que pueda verlo con un editor de texto. Se parecerá a algo como esto:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity version="1.0.0.0" name="MyApplication.app"/> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> <security> <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3"> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>

El elemento <assemblyIdentity> es el generador de problemas. Tenga en cuenta que tiene un nombre genérico, "MyApplication.app" y un número de versión predeterminado de 1.0.0.0. Si observa el archivo yourapp.exe.manifest que generó el asistente de publicación, verá algo como esto:

<asmv1:assemblyIdentity name="WindowsFormsApplication86.exe" version="1.0.0.0" publicKeyToken="e939ba736dc34835" language="neutral" processorArchitecture="msil" type="win32" />

Ni siquiera cerca. Kaboom

Varias formas de solucionar esto:

  • Con la vista Archivo + Abrir + Archivo del ejecutable aún abierta, haga clic con el botón derecho en la ID del manifiesto n. ° 1 y seleccione Eliminar. Eso lo elimina por completo, System.Deployment ahora encontrará el archivo en su lugar
  • Proyecto + Propiedades, pestaña Aplicación, cambie la opción Manifiesto a "Crear aplicación sin manifiesto". Esta debería ser su solución preferida
  • Si necesita un manifiesto personalizado y utiliza el archivo de manifiesto de la aplicación, debe eliminarlo nuevamente y, en su lugar, editar el archivo yourapp.exe.manifest que generó el asistente de publicación. Esto es bastante doloroso y es mejor evitarlo ya que necesita repetir esto
  • Actualice su versión VS, este problema se ha solucionado y ahora es lo suficientemente inteligente como para reconstruir su proyecto, ahora sin el manifiesto predeterminado, cuando lo publica. Creo que a partir de VS2012, definitivamente para VS2013.

Tengo una aplicación de formulario de victoria para la que puedo crear un instalador e instalarlo. Sin embargo, cuando se trata de una implementación de un clic, no funciona, obtengo el siguiente error.

"La validación de la aplicación no tuvo éxito. No se puede continuar"

Cuando hago clic en más detalles obtengo lo siguiente.

Se detectaron los siguientes mensajes de falla:

  • La referencia en el manifiesto no coincide con la identidad del ensamblado descargado Designer.exe.

He intentado una serie de soluciones diferentes sin éxito.

  • Intenté crear la aplicación con un manifiesto.
  • He eliminado todos los requisitos previos.
  • También cambié todos los archivos de la aplicación para incluir.

¿Alguien sabe cómo podría solucionar este problema?