112 votes

Erreur lors du déploiement de l'application ClickOnce - La référence dans le manifeste ne correspond pas à l'identité de l'assemblage téléchargé.

J'essaie de déployer une application ClickOnce, mais l'installation échoue sur le client. Voici le journal des erreurs :

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.

L'exe principal que je dois déployer est MyProductFrontDesk.exe qui a une dépendance envers MyProductSiteServer.exe - et c'est là que l'erreur semble se produire : "La référence dans le manifeste ne correspond pas à l'identité de l'assemblage téléchargé MyProductSiteServer.exe".

Quel manifeste doit être corrigé ? Et comment ?

0 votes

Le projet MySiteServer.exe se trouve-t-il dans la même solution Visual Studio que MyProductFrontDesk.exe ? Si c'est le cas, est-ce que votre configuration de construction a les deux assemblages sélectionnés pour la construction ?

0 votes

@Jay - oui, dans la même solution, les deux ont été sélectionnés pour construire.

116voto

stuartd Points 22668

Il y avait un problème avec Visual Studio 2008 qui est résolu en n'incorporant pas le manifeste par défaut - Un des commentaires sur cet article suggère que le problème existe toujours dans Visual Studio 2010.

Dans les propriétés du projet -> Application onglet -> Ressources -> case à cocher Icône et manifeste Le paramètre "Embed manifest with default settings" a causé le problème. En le remplaçant par "Créer une application sans manifeste", le problème est résolu.

0 votes

J'ai trouvé commentaire 488301 particulièrement utile : le <assemblyIdentity/> dans le manifeste personnalisé peut être ajusté (ou omis pour permettre au compilateur d'émettre l'identité correcte de l'assemblage) dans votre fichier personnalisé .manifest permettant de spécifier des choses comme <requestedExecutionLevel/> sans casser ClickOnce.

5 votes

Mon scénario était une application GUI qui a besoin d'une deuxième application qui est une application console. Si, comme moi, vous préférez ne pas modifier les paramètres par défaut, la publication manuelle de cette deuxième application a créé un app.manifest qui est apparu dans le dossier Properties, puis la publication de la première application a fonctionné sans devoir modifier les paramètres par défaut d'intégration d'un manifest.

7 votes

J'ai eu le même problème avec VS 2013. Cette solution a fonctionné.

38voto

skimania Points 521

Je rencontrais le même problème, mais ma solution était très différente.

Mon application ClickOnce faisait référence à un autre projet de fichier EXE dans ma solution. Ainsi, lorsque le client l'a téléchargé et qu'il y avait un autre fichier EXE, celui-ci n'avait pas de manifeste.

La suppression de la dépendance d'un autre exécutable a résolu mon problème.

2 votes

J'ai également deux EXE. La suppression de la dépendance exclut l'EXE référencé de la compilation. Existe-t-il un moyen de l'inclure ?

11 votes

C'était la solution pour moi. L'un des projets auxquels mon EXE principal faisait référence était lui-même une "application Windows". Lorsque j'ai changé ce projet en "Class Library" et que j'ai republié, tout a fonctionné.

0 votes

J'ai utilisé la suggestion de @ChrisRay dans VS2012, et le programme s'est installé sans aucune difficulté. Merci !

12voto

Eduardo Points 51

J'ai confirmé que le problème existe également dans Visual Studio 2010. Le fait de sélectionner "Créer une application sans manifeste" dans Propriétés du projet - Application - Ressources a résolu le problème.

8 votes

Notez juste que j'ai dû changer cette propriété sur le projet dont le message d'erreur se plaignait, qui pour moi était un projet référencé par le projet que j'essayais réellement de publier, et non le projet que j'essayais réellement de publier.

6voto

BitFiddler Points 759

Cela peut également se produire si vous avez deux versions différentes d'un paquet nuget référencé dans différentes dlls dans votre projet. Dans mon cas, j'utilisais un framework appelé Catel, j'avais une version plus récente référencée dans une dll que dans une autre (par inadvertance) mais cela a provoqué cette erreur dans clickonce. Le fait de référencer la même version a résolu le problème.

4voto

user2971656 Points 11

J'ai eu exactement le même problème. Impossible de supprimer la dépendance car elle est nécessaire au projet principal. Le deuxième projet était un projet Console. J'ai changé pour Class Library et tout a fonctionné.

0 votes

Ce commentaire a réglé mon problème. Merci !

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X