Question

J'ai une application ASP.NET MVC 2.

  • Projet Web contient une référence à SomeProject
  • SomeProject contient des références à ExternalAssembly1 et ExternalAssembly2.
  • SomeProject appelle explicitement dans ExternalAssembly1, mais pas ExternalAssembly2.
  • ExternalAssembly1 remet en ExternalAssembly2

Quand je joue un tout build local est cool. Toutes les DLL sont inclus dans le dossier bin \ debug. Le problème est que lorsque j'utilise la commande Publier Web dans Visual Studio 2010, il déploie tout sauf ExternalAssembly2.

Il semble ignorer les assemblées qui ne sont pas directement utilisés (souvenez-vous, ExternalAssembly2 est utilisé par ExternalAssembly1).

Est-il possible que je peux dire Visual Studio 2010 pour inclure ExternalAssembly2?

Je peux écrire une méthode factice qui remet en ExternalAssembly2. Cela fonctionne, mais je ne veux vraiment pas avoir un code fictif dans le seul but de provoquer VS2010 de publier la DLL.

Était-ce utile?

La solution

Aucune de ces réponses sont suffisantes dans mon esprit. Cela ne semble pas être un bug véritable. Je mettrai à jour cette réponse si jamais je trouve une solution non-hack, ou Microsoft corrige le bug.

Mise à jour:

ne semble pas prometteur. https://connect.microsoft .com / VisualStudio / feedback / détails / 731303 / publication-web fonctionnalités non-compris-all-dll

Autres conseils

J'ai ce même problème (différents ensembles cependant). Si je référence les assemblées dans mon projet Web, puis ils seront inclus dans la publication sortie, mais ils devraient être inclus de toute façon, car ils sont des dépendances indirectes:

Projet Web ---> Assemblée A ---> Assemblée B

Surchauffe, les ensembles A et B sont outputed dans le dossier \ bin. Sur publier, seul l'ensemble A est outputed le dossier de publication.

J'ai essayé de changer les paramètres de publication d'inclure tous les fichiers dans le projet web, mais j'ai des fichiers dans ma publication sortie qui ne devrait pas être déployées.

Cela semble être un bug pour moi.

J'ai eu le même problème avec VS2010 et un service WCF application.

Il se avère que si votre (directement ou indirectement) référencé DLL sont déployés à GAC, la fonctionnalité de publication VS les exclut. Une fois que je l'ai enlevé les assemblées du GAC, fonction d'édition a commencé à travailler comme prévu.

Je suppose que VS suppose que si vos assemblages peuvent être situés dans GAC sur la machine que vous construisez, ils seront situés dans GAC sur la machine cible aussi bien. Au moins dans mon cas, cette hypothèse est fausse.

Mes tests montrent que les ensembles externes faire publier quand j'ai une référence sur eux dans le projet web. Je n'ai pas à écrire de code factice pour le faire fonctionner. Cela me semble acceptable.

Je suis d'accord avec Nicolas que cela semble être un bug dans le studio visuel. Au moins, il me échappe ce que la raison du comportement pourrait être.

J'ai créé cette question comme un bug sur Microsoft Connect. Si quelqu'un connaît elle pourrait voter it up https://connect.microsoft.com/VisualStudio/feedback/details/637071/publish-web-feature-not-including-all-dlls alors nous l'espérons faire quelque chose à ce sujet.

Si vous allez dans la liste des propriétés de référence ExternalAssembly2 et de modifier la « copie locale » à « True » je pense que cela pourrait résoudre votre problème.

Je ne sais pas si vous regardez ce encore mais j'ai trouvé la solution (j'ai eu exactement le même problème) via cet article MSDN . Sous la rubrique « action de génération » pour le fichier choisissez « contenu » qui devrait l'inclure dans la liste des fichiers Publier de plus.

J'ai créé un nouveau bug Se connecter ici https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls

Je suis aussi attaché une solution et les étapes détaillées pour reproduire ce problème. Espérons que cette fois-ci, ils ne fermeront pas comme ne peut pas se reproduire.

Voter pour cette question de connexion si vous rencontrez le problème dll manquants.

Copier fait l'affaire locale. J'ai eu un problème que l'Assemblée Newtonsoft.Json s'inclus dans le package deploymeny. Copie locale a été définie sur false.

Je rencontre le même type de problème avec un projet web. J'ai un projet Web qui fait référence à l'assemblage A qui référence l'ensemble B. Il a bien fonctionné pendant un certain temps, mais aujourd'hui, il a été cassé. J'ai fait une reconstruis de la solution et cette fois-ci tout correctement déployé.

J'ai eu ce même problème aujourd'hui. Je publiais mon projet web et réalisé que toutes la référence DLL il y avait. En particulier, les références de DLL indirecte.

Il se trouve que le répertoire dans lequel je publiais à était hors de l'espace disque (partage réseau). Je venais juste assez d'espace pour publier tous les fichiers à l'exception de quelques DLL référence indirecte de. Le plus triste est que VS08 ne jette aucune erreur. Il vient de publier les fichiers sont d'habitude. Je vidé un peu d'espace disque dur et tout a bien fonctionné.

Je ne trouve pas la question de l'espace disque dur jusqu'à ce que j'essayé de déplacer manuellement de la DLL sur.

dans mon cas, il est assez délicat. Référence à ExternalAssembly2 est pas nécessaire de construire le projet, mais vital pour le temps courir puisque nous utilisons la réflexion pour configurer l'unité conteneur. Donc, je supprime la référence - construire le projet avec succès, mais je reçois erreur d'exécution. Si je conserve la référence que je peux construire et exécuter l'application, mais je ne peux pas publier avec ExternalAssembly2 - obtenir exception d'exécution aussi bien. Cela est arrivé à cause de l'optimisation des assemblages de VS2010 interne.

Alors, ce que nous pouvons faire ici? 1. Mettez peice unrequired de code pour utiliser la classe de toute ExternalAssembly2. 2. échapper à la réflexion et utiliser des ensembles statiques de liaison.

Espérons que cela aide à smbd.

Je suis le même problème et c'est un bug VS2010 s'il y a un lien de référence comme: Projet Web -> Projet personnalisé -> Assembly1 -.> (Indirectement) Assemblée2

Pour l'instant je trouve si je référence à la Assembly1 dans le projet Web, puis Assemblée2 est inclus dans le dossier bin. Donc, je devais ajouter un lien de référence supplémentaire comme: Projet Web -> Assembly1 -> (indirectement) Assemblée2. Ensuite, VS peut reconnaître Assemblée2 et inclure son fichier dll action de publication.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top