53 votes

Visual Studio 2010 Publier le site Web en vedette non, y compris toutes les Dll

J'ai un ASP.NET MVC 2 de la demande.

  • 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 appels en ExternalAssembly2

Lorsque j'effectue une construction locale, tout est cool. Toutes les Dll sont inclus dans le dossier bin\debug. Le problème est que lorsque j'utilise la commande Publier le site Web dans Visual Studio 2010, il déploie tout, sauf ExternalAssembly2.

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

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

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

20voto

manu08 Points 1572

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

Mise à jour:

Ne semble pas prometteuse. https://connect.microsoft.com/VisualStudio/feedback/details/731303/publish-web-feature-not-including-all-dlls

7voto

Nicholas Cloud Points 1006

Je vais avoir ce même problème (différentes assemblées). Si je de référence, les assemblées de mon projet web, alors ils seront incluses dans la publication de sortie, mais elles devraient l'être de toute façon parce qu'ils sont indirects dépendances:

Projet Web ---> Montage D'Un ---> Montage B

À construire, assemblages A et B sont outputed dans le dossier \bin. Sur publier, seul l'assemblage est outputed dans le dossier de publication.

J'ai essayé de changer les paramètres de publication pour inclure tous les fichiers dans le site web du projet, mais ensuite j'ai des fichiers dans mon publier la sortie qui ne devrait pas être déployé.

Cela semble être un bug pour moi.

6voto

Antti Rauhala Points 21

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

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

Je suppose que VS est en supposant que si vos assemblées peut être situé dans le GAC sur la machine, vous construisez, ils seront situés dans le GAC sur la machine cible. Au moins dans mon cas, cette hypothèse est fausse.

3voto

Stefan Egli Points 11708

Mes tests montrent que le commissaire aux assemblées d'être publié quand j'ai une référence dans le projet web. Je n'ai pas à écrire n'importe quel code factice pour le faire fonctionner. Cela semble tout à fait acceptable pour moi.

Je suis d'accord avec Nicolas, que ce qui semble être un bug dans visual studio. Au moins il m'échappe en ce que la raison pour le comportement pourrait être.

3voto

tgallard Points 135

J'ai créé cette question à cause d'un bug sur Microsoft Connect. Si quelqu'un connaît-il le droit de vote, jusqu' https://connect.microsoft.com/VisualStudio/feedback/details/637071/publish-web-feature-not-including-all-dlls alors j'espère que nous allons faire quelque chose à ce sujet.

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