2010-03-12 8 views
1

J'ai donc une solution winform, déployée via clickonce. Tout a bien fonctionné jusqu'à ce que j'ajoute un projet WCF. (voir erreur dans l'analyse du fichier manifeste à la fin de la publication) Maintenant, je remarque que MSBuild compile le service dans un répertoire _PublishedWebsites. Je ne sais pas de quoi il s'agit, mais je soupçonne que c'est la cause du problème. Ce projet wcf fait référence à d'autres projets au sein de la solution. Je suis en train d'héberger le service wcf dans l'application, donc je n'ai pas vraiment besoin de MSBuild pour faire tout ça pour moi. Des idées?L'installation de Clickonce échoue après l'ajout du projet de service WCF

============================================== ============================================ PLATFORM VERSION INFO Windows: 5.1.2600.131072 (Win32NT) Common Language Runtime: 2.0.50727.3603 System.Deployment.dll: 2.0.50727.3053 (netfxsp.050727-3000) mscorwks.dll: 2.0.50727.3603 (GDR.050727-3600) dfdll.dll: 2.0.50727.3053 (netfxsp.050727-3000) dfshim.dll: 2.0.50727.3053 (netfxsp.050727-3000)

SOURCES URL déploiement: file: /// C: /applications/abc/dev/abc.Application.application

IDENTITÉ d'identité de déploiement: Gestion des flux System.app, Version = 1.4.0.0, Culture = neutral, PublicKeyToken = 8453086392175e0f, processorArchitecture = MSIL

SOMMAIRE DE LA DEMANDE * L'application installable. * Le paramètre url de confiance est défini. SOMMAIRE D'ERREURS Voici un résumé des erreurs, les détails de ces erreurs sont répertoriés plus loin dans le journal. * L'activation de C: \ applications \ abc \ dev \ abc.Application.application a entraîné une exception. Les messages d'échec suivants ont été détectés: + Exception lisant manifeste à partir du fichier: /// C: /applications/abc/dev/1.4.0.0/abc.Application.exe.manifest: le manifeste peut ne pas être valide ou le fichier n'a pas pu être ouvert. + L'analyse et la création DOM du manifeste ont entraîné une erreur. A la suite des erreurs parsing ont été remarqués: -HRESULT: 0x80070c81 ligne de départ: 0 colonne Début: 0 fichier Host:
+ Exception de HRESULT: 0x80070C81

COMPOSANT MAGASIN TRANSACTION NON RÉSUMÉ Aucune erreur de transaction n'a été détectée.

AVERTISSEMENTS Il n'y avait aucun avertissement pendant cette opération.

OPÉRATION ÉTAT D'AVANCEMENT * [12/03/2010 6:33:53 PM]: L'activation de C: \ applications \ abc \ dev \ abc.Application.application a démarré. * [12/03/2010 6:33:53 PM]: Le traitement du manifeste de déploiement s'est terminé avec succès. * [12/03/2010 6:33:53 PM]: L'installation de l'application a commencé.

DÉTAILS D'ERREUR Des erreurs suivantes ont été détectées pendant cette opération. * [12/03/2010 6:33:53 PM] System.Deployment.Application.InvalidDeploymentException (ManifestParse) - La lecture des exceptions est manifeste à partir du fichier: /// C: /applications/abc/dev/1.4.0.0/abc .Application.exe.manifest: le manifeste peut ne pas être valide ou le fichier n'a pas pu être ouvert. - Source: System.Deployment - Trace de pile: au niveau du système.Deployment.Application.ManifestReader.FromDocument (String localPath, ManifestType manifestType, Uri SourceUri) à System.Deployment.Application.DownloadManager.DownloadManifest (Uri & SourceUri, String targetPath, notification IDownloadNotification, options DownloadOptions, ManifestType manifestType, ServerInformation & serverInformation) à System.Deployment.Application.DownloadManager.DownloadApplicationManifest (AssemblyManifest deploymentManifest, String targetDir, Uri deploymentUri, notification IDownloadNotification, options DownloadOptions, Uri & appSourceUri, String & appManifestPath) à System.Deployment.Application.ApplicationActivator.DownloadApplication (SubscriptionState subétatiques, ActivationDescription actDesc, Int64 transactionId, TempDirectory & downloadTemp) à System.Deployment.Application.ApplicationActivator.InstallApplication (SubscriptionState & infraétatiques, ActivationDescription actDesc) à System.Deployment.Application.ApplicationActivator.PerformDeploymentActivation (Uri activationUri, Boolean IsShortCut, String textualSubId, String deploymentProviderUrlFromExtension, browsersettings browsersettings, String & errorPageUrl) à System.Deployment.Application.ApplicationActivator.ActivateDeploymentWorker (état d'objet) --- Exception interne --- System.Deployment.Application.InvalidDeploymentException (ManifestParse) - et la création DOM Parsing du manifeste a entraîné une erreur . À la suite des erreurs d'analyse syntaxique ont été remarqués: -HRESULT: 0x80070c81 ligne de départ: 0 colonne Début: 0 fichier Host:
- Source: System.Deployment - Trace de la pile: à System.Deployment.Application.Manifest.AssemblyManifest. LoadCMSFromStream (flux de flux) à System.Deployment.Application.Manifest.AssemblyManifest..ctor (FileStream fileStream) à System.Deployment.Application.ManifestReader.FromDocument (String localPath, manifeste ManifestType, Uri sourceUri) --- Exception interne --- System.Runtime.InteropServices.COMException - Exception de HRESULT: 0x80070C81 - Source: System.Deployment - Trace de la pile: à System.Deployment.Internal.Isolation.IsolationInterop.CreateCMSFromXml (byte [] buffer, UInt32 bufferSize, IManifestParseErrorCallback Callback, guid & riid) à System.Deployment.Application.Manifest.AssemblyManifest .LoadCMSFromStream (Flux de flux)

DÉTAILS DE TRANSACTION DE MAGASIN DE COMPOSANTS Aucune information de transaction n'est disponible.

Répondre

1

Je suis un peu confus, que voulez-vous dire par: « Je suis d'hébergement en fait le service WCF dans l'application, donc je ne ai pas vraiment besoin MSBuild faire tout cela pour moi »

Le service WCF doit être une solution séparée (côté serveur uniquement) avec tous les bits appartenant uniquement au serveur. L'application clickonce doit être une solution côté client uniquement, vous faites référence au service WCF en créant des références Web, en fournissant une URL, etc. pour le service.

Il est possible d'avoir le service WCF (côté serveur) dans le même .sln que l'application winforms, assurez-vous de ne pas ajouter une référence de projet au service WCF, la communication est effectuée uniquement avec des références Web. Personnellement, je pense qu'il est beaucoup plus propre de séparer complètement les projets côté client et côté serveur (après avoir dit qu'il est logique de partager certains projets dans les deux solutions, par exemple si vous avez une couche biz qui ignore la couche de persistance, elle peut être partagée).