Pregunta 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 parece que es 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?


74
2018-03-17 09:56


origen


Respuestas:


Había un problema con Visual Studio 2008 que se resuelve al no incrustar el manifiesto predeterminado - uno de los comentarios sobre ese artículo sugiere que el problema todavía existe en Visual Studio 2010.

En propiedades del proyecto -> Solicitud pestaña -> Recursos -> casilla de verificación Icono y manifiesto, el ajuste "Embed manifest with default settings" causó el problema. Establecerlo en "Crear aplicación sin manifiesto" soluciona el problema.


88
2018-03-17 12:41



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.


34
2018-04-16 15:35



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

La forma de resolver esto fue habilitando Configuración de seguridad de ClickOnce en todos los proyectos referenciados como explicó Ian 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 el "Ficha de seguridad"en su"Propiedades del proyecto"tenía la opción"Habilitar la configuración de seguridad de ClickOnce"Marcado con la opción"Esta es una aplicación de plena confianza"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 configuradas 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í.


31
2018-05-20 00:36



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.


9
2018-05-12 17:37



Esto también puede suceder si tiene dos versiones diferentes de NuGet paquete al que se hace referencia 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.


6
2018-05-13 21:26



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


4
2017-07-14 16:26



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 Biblioteca de clases, y luego todo funcionó.


3
2017-11-14 15:30



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.


2
2017-10-21 04:26



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:

  <Content Include="..\packages\<package>\lib\<app>.exe">
    <Link><app>.exe.bin</Link>
    <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
  </Content>
  <ItemGroup>
    <PublishFile Include="<app>">
      <Visible>False</Visible>
      <Group>
      </Group>
      <TargetPath>
      </TargetPath>
      <PublishState>Exclude</PublishState>
      <IncludeHash>True</IncludeHash>
      <FileType>Assembly</FileType>
    </PublishFile>
  </ItemGroup>

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}\\<app>.exe"))
        {
            File.Copy($"{appDir}\\<app>.exe.bin", $"{appDir}\\<app>.exe");
        }
    }
}

1
2018-01-03 19:21



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.


1
2017-11-17 09:27