Error al implementar la aplicación ClickOnce: la referencia en el manifiesto no coincide con la identidad del ensamblado descargado

Estoy intentando implementar una aplicación ClickOnce, pero la instalación falla en el cliente. Aquí está el registro de errores:

PLATFORM VERSION INFO Windows : 6.1.7601.65536 (Win32NT) Common Language Runtime : 4.0.30319.1 System.Deployment.dll : 4.0.30319.1 (RTMRel.030319-0100) clr.dll : 4.0.30319.1 (RTMRel.030319-0100) dfdll.dll : 4.0.30319.1 (RTMRel.030319-0100) dfshim.dll : 4.0.31106.0 (Main.031106-0000) SOURCES Deployment url : http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET Deployment Provider url : http://MyProduct.com/Download/Workstation/MyProduct%20Front%20Desk.application Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET Application url : http://MyProduct.com/Download/Workstation/Application%20Files/MyProduct%20Front%20Desk_1_0_0_7/MyProduct%20Front%20Desk.exe.manifest Server : Microsoft-IIS/7.5 X-Powered-By : ASP.NET IDENTITIES Deployment Identity : MyProduct Front Desk.application, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil Application Identity : MyProduct Front Desk.exe, Version=1.0.0.7, Culture=neutral, PublicKeyToken=df343a0868ab2d74, processorArchitecture=msil, type=win32 APPLICATION SUMMARY * Installable application. ERROR SUMMARY Below is a summary of the errors, details of these errors are listed later in the log. * Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application resulted in exception. Following failure messages were detected: + Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe. COMPONENT STORE TRANSACTION FAILURE SUMMARY No transaction error was detected. WARNINGS There were no warnings during this operation. OPERATION PROGRESS STATUS * [03/17/11 11:51:04] : Activation of http://MyProduct.com/download/workstation/MyProduct%20Front%20Desk.application has started. * [03/17/11 11:51:04] : Processing of deployment manifest has successfully completed. * [03/17/11 11:51:04] : Installation of the application has started. * [03/17/11 11:51:05] : Processing of application manifest has successfully completed. * [03/17/11 11:51:06] : Found compatible runtime version 4.0.30319. * [03/17/11 11:51:06] : Request of trust and detection of platform is complete. ERROR DETAILS Following errors were detected during this operation. * [03/17/11 11:51:30] System.Deployment.Application.InvalidDeploymentException (RefDefValidation) - Reference in the manifest does not match the identity of the downloaded assembly MyProductSiteServer.exe. - Source: System.Deployment - Stack trace: at System.Deployment.Application.DownloadManager.ProcessDownloadedFile(Object sender, DownloadEventArgs e) at System.Deployment.Application.FileDownloader.DownloadModifiedEventHandler.Invoke(Object sender, DownloadEventArgs e) at System.Deployment.Application.SystemNetDownloader.DownloadSingleFile(DownloadQueueItem next) at System.Deployment.Application.SystemNetDownloader.DownloadAllFiles() at System.Deployment.Application.FileDownloader.Download(SubscriptionState subState) at System.Deployment.Application.DownloadManager.DownloadDependencies(SubscriptionState subState, AssemblyManifest deployManifest, AssemblyManifest appManifest, Uri sourceUriBase, String targetDirectory, String group, IDownloadNotification notification, DownloadOptions options) at System.Deployment.Application.ApplicationActivator.DownloadApplication(SubscriptionState subState, ActivationDescription actDesc, Int64 transactionId, TempDirectory& downloadTemp) at System.Deployment.Application.ApplicationActivator.InstallApplication(SubscriptionState& subState, ActivationDescription actDesc) at System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation(Uri activationUri, Boolean isShortcut, String textualSubId, String deploymentProviderUrlFromExtension, BrowserSettings browserSettings, String& errorPageUrl) at System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker(Object state) COMPONENT STORE TRANSACTION DETAILS No transaction information is available. 

El principal exe que necesito implementar es MyProductFrontDesk.exe , que tiene una dependencia en MyProductSiteServer.exe , y que parece ser donde se produce el error: “La referencia en el manifiesto no coincide con la identidad del ensamblado descargado MyProductSiteServer.exe ”

¿Qué manifiesto necesita ser corregido? ¿Y cómo?

Hubo un problema con Visual Studio 2008 que se resuelve al no incrustar el manifiesto predeterminado : uno de los comentarios en ese artículo sugiere que el problema aún existe en Visual Studio 2010.

En las propiedades del proyecto -> pestaña Aplicación -> Recursos -> checkbox Icono y manifiesto , la configuración “Inventario incrustado con configuraciones predeterminadas” causó el problema. Establecerlo en “Crear aplicación sin manifiesto” soluciona el problema.

Estaba encontrando el mismo problema, pero mi solución fue muy diferente.

Mi aplicación ClickOnce estaba haciendo referencia a otro proyecto de archivo EXE en mi solución, por lo que cuando el cliente lo descargó, y había otro archivo EXE, ese no tenía un manifiesto.

Eliminar la dependencia de otro ejecutable resolvió mi problema.

Tuve el mismo problema cuando agregué una referencia a otro proyecto.

La forma de resolver esto fue habilitando la configuración de seguridad de ClickOnce en todos los proyectos referenciados como Ian explicó aquí (énfasis mío):

Para mí, la forma en que esto se resolvió fue asegurar que todos los Proyectos bajo la Solución que expuso la ” Pestaña de Seguridad ” en sus ” Propiedades del Proyecto ” tuvieran la Opción ” Activar Configuraciones de Seguridad ClickOnce ” marcadas con la Opción ” Esto es una confianza completa aplicación “Seleccionado. Esto tiene que ver con la creación correcta del Manifiesto y la aplicación no se instalará si estas opciones no están establecidas en todos los Proyectos dentro de la Solución que lo requieren.

Creo que esta es la forma correcta de solucionarlo cuando se hace referencia a otro proyecto con la misma solución.

La publicación del foro vinculado ya ha caducado, pero está disponible en el archivo aquí .

Confirmé que el problema también existe en Visual Studio 2010. Al seleccionar “Crear aplicación sin manifiesto” en Propiedades del proyecto – Aplicación – Recursos resolvió el problema.

Esto también puede suceder si tiene dos versiones diferentes de un paquete NuGet referenciado en diferentes archivos DLL en su proyecto. En mi caso, yo estaba usando un marco llamado Catel, y tenía una versión más nueva referenciada en un archivo DLL que otra (supervisión), pero esto provocó que ClickOnce escupiera este error. Hacer referencia a la misma versión resolvió el problema.

Tuve el mismo problema, pero mi solución fue cambiar el ‘Objetivo de la plataforma’ a ‘x86’ (Propiedades del proyecto -> Pestaña Comstackción). Se estableció en Cualquier CPU. Tan pronto como cambié la configuración y volví a publicarla, el instalador de ClickOnce pudo completarse.

Tenía exactamente el mismo problema. No pude eliminar la dependencia como lo necesitaba el proyecto principal. El segundo proyecto fue un proyecto de consola.

Cambié a Class Library , y luego todo funcionó.

He experimentado el mismo error al implementar con el proyecto configurado para depurar. Cuando se cambió de nuevo a Release, no hubo ningún error.

Otra solución, en caso de que el exe de la dependencia con el manifiesto de la aplicación incorrecta no se pueda cambiar (digamos que proviene de un paquete NuGet). El binario se puede incluir como contenido con una extensión ficticia, por lo que ClickOnce no intenta validar el manifiesto y luego se renombra durante el inicio de la aplicación.

csproj:

   .exe.bin PreserveNewest    False     Exclude True Assembly   

App.xaml.cs:

 public partial class App : Application { private void Application_Startup(object sender, StartupEventArgs e) { var appDir = Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName); if (!File.Exists($"{appDir}\\.exe")) { File.Copy($"{appDir}\\.exe.bin", $"{appDir}\\.exe"); } } } 

Tuve el mismo problema, y ​​probé todas las soluciones sugeridas anteriormente aquí, y todas ellas no funcionaron.

Lo arreglé cambiando la ubicación de actualización. Desde propiedades del proyecto -> Publicar -> Actualizaciones . Cambia la ubicación de actualización a tu carpeta publicada.

TAMBIÉN SOLUCIONADO PARA ClickOnce .exe llamando .exe llamando .exe.

También tuve este problema, usando VB.NET en Visual Studio 2010.

Tengo una aplicación ClickOnce de Windows Forms que hace referencia a una segunda aplicación de Windows Forms que a su vez hace referencia a una tercera aplicación de Windows Forms. (Estas aplicaciones segunda y tercera son archivos EXE en lugar de archivos DLL por simplicidad, ya que es igualmente probable que se ejecuten de manera independiente o que se llamen con propiedades que se les pasen).

Tuve que comentar AMBOS contenidos de manifiesto de la segunda y tercera aplicaciones por:

Tutorial: Implementación manual de una aplicación ClickOnce

Funciona perfectamente

Estoy usando Visual Studio 2012 en Windows 7 y necesito publicar una solución que consta de dos proyectos.

Como señaló Eduardo, marcar ambos proyectos como ClickOnce y habilitar Full Trust Application resuelve el problema.

Tuve un problema diferente que pude resolver y por eso quería publicar. Mi problema era que estaba ejecutando 3 sucursales de TFS. Actualicé los controles Telerik en una de mis twigs pero no en las otras. Una vez que actualicé los controles de Telerik en las 3 twigs y volví a publicar, funcionó y este error desapareció.

Estaba ejecutando VS2015 en ese momento.

Es interesante. Acabo de redesplegar la aplicación y el problema resuelto. Tal vez una corrupción de archivos debido a la red.

Yo uso mage.exe para generar mi manifiesto. Agregar esto a mi .csproj solucionó el problema. También puede probar la bandera del comstackdor -nowin32manifest el estado en -nowin32manifest ; No lo he probado. No veo “Crear aplicación sin manifiesto” de stuartd en Visual Studio 2017; Creo que esto es lo que hace sin embargo.

  true  

También tengo esto en mi .csproj :

 false 

Si tiene un progtwig principal que hace referencia a otro, debe realizar el truco “Crear aplicación sin manifiesto” en el Progtwig principal del progtwig:

Proyecto -> Propiedades -> Pestaña Aplicación -> Recursos -> Manifiesto -> menú desplegable “Crear aplicación sin manifiesto”

y luego cambie a las propiedades del proyecto del progtwig al que se hace referencia y repita el proceso.