2009-05-11 12 views
5

J'ai un projet d'installation et de déploiement qui, sur notre serveur de build, indique ce qui suit dans le résumé:Visual Studio Setup et build déploiement échoue sans erreur

========== Tout regénérer: 25 ont réussi, 2 a échoué, 0 sautées ==========

Je ne sais pas ce que les deux sont qui a échoué, mais je crois que l'un d'eux est le projet vdproj parce que Si je lance la construction sans le programme d'installation, aucune erreur n'est signalée. Les messages "fichier d'emballage" correspondent à la sortie sur mon PC, où la construction se termine avec succès.

Je suis convaincu que c'est une question d'environnement, juste qu'il n'y a aucun journal qui dise quel était le problème - juste le nombre dans le résumé.

Encore plus étrange est que les fichiers setup.exe et myapp.msi semblent être générés correctement. Je ne peux pas déterminer quels sont les projets qui ont échoué, car il n'y a aucune mention d'un projet qui a échoué. Tout ce que je sais, c'est que si je construis la solution en excluant le projet d'installation, le résumé indique qu'il n'y a pas eu d'erreurs.

Quelqu'un peut-il penser à quelque chose à vérifier?

Répondre

11

La réponse à la fin était qu'il est un bug connu: https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=317870

La réponse est de modifier les fichiers de projet (* .csproj) contenant LINQ to SQL dbml fichiers pour enlever des choses, comme suit:

  1. Fermer VS 2008.
  2. Ouvrez le fichier de projet contenant l'élément LINQ to SQL dans le Bloc-notes.
  3. Supprimez les lignes suivantes:
    [ItemGroup]
    [service Include = "{3259AA49-8AA1-44D3-9025-A0B520596A8C}" /]
    [/ ItemGroup]

Le projet d'installation sera maintenant construire avec succès. Toutefois, si vous double-cliquez sur le fichier DBML pour ouvrir le concepteur dans VS 2008, le projet d'installation arrêtera de générer à nouveau. Les lignes ci-dessus ne sont pas et ne sont pas ajoutées au fichier de projet , mais le projet d'installation cessera de se construire de toute façon. Juste redémarrer VS 2008 et il fonctionnera à nouveau - jusqu'à ce que vous ouvriez le concepteur DBML à nouveau. Une fois que le projet d'installation échoue en raison de ce problème, il ne sera jamais construire avec succès jusqu'à ce que vous redémarrer VS 2008.

J'ai finalement trouvé la réponse (ou au moins le lien vers la réponse) du MS Connect forum topic. Voici le documented workaround.

+0

Une autre solution de contournement répertoriée sur cette page de bogues Microsoft a fonctionné pour moi: faites un clic droit sur la solution et cliquez sur "Nettoyer la solution" dans Visual Studio. –

+1

Vous pouvez modifier un fichier csproj dans VS sans fermer la solution: 1. dans le menu contextuel du projet, déchargez le projet, 2. dans le menu contextuel, ouvrez le fichier csproj dans VS, 3. éditez et enregistrez, 4. dans le menu contextuel rouvrir le projet. – Richard

0

(vous ne dites pas ce type de serveur Build que vous avez. Parce que vous tagged « .net » Je vais supposer que vous utilisez TFS et Team Build.)

Team Build utilise MSBuild (vraiment IS MSBuild). MSBuild ne peut pas créer de fichiers vdproj. Seul Visual Studio peut le faire. Par conséquent, si vous incluez des solutions incluant des fichiers vdproj, elles échoueront. (Vérifiez votre journal de construction autour des projets vdproj pour voir s'ils ont échoué.)

Une façon d'empêcher ces échecs de s'enregistrer est de créer une configuration que vous compilez pour votre Team Build qui n'inclut pas vos fichiers vdproj (si le les projets échoués vous embêtent vraiment). Le meilleur moyen d'obtenir vos fichiers msi et exe est d'exécuter Visual Studio sur vos projets vdproj. Ajoutez une cible personnalisée une fois la génération terminée et appelez Visual Studio manuellement sur votre projet. (Je ne sais pas pourquoi vos fichiers msi et exe sont générés à moins que vous ne le fassiez.)

Comme alternative, envisagez Windows Installer XML (WIX). Version 3 (qui est très très proche de la version complète et a une bêta stable) utilise MSBuild. Cela signifie que vos solutions peuvent être compilées via Team Build sans aucune action particulière. Le seul inconvénient est que WIX ne peut pas cibler 'Any CPU', mais il peut faire partie d'une cible de niveau Solution de 'Any CPU' tant qu'il cible une plate-forme spécifique.

+0

Le serveur de génération lui-même est FinalBuilder, bien que cela soit discutable car le problème est survenu lors de la construction dans VS sur le serveur de build. –

0

ouais, j'ai déjà eu ça.

ne suis pas sûr de votre jeu, mais essayez ceci est approprié:

Tout d'abord, faites un clic droit sur votre fichier Solution> Propriétés> Configuration

Là-dedans, utilisez les cases à cocher de construction à expérimenter avec laquelle projets construisent ensemble, et qui ne le font pas.

De même, dans votre système de fichiers, supprimez les dossiers de débogage/relâchement pour tous vos projets.Enfin, d'après mon expérience, cette erreur est généralement causée par un web.config corrompu/manquant.

laissez-moi savoir comment vous allez