86 votes

Exclure des fichiers à partir du site web de publier dans Visual Studio

Puis-je exclure un dossier ou des fichiers lorsque je publie un site web dans Visual Studio 2005? J'ai diverses ressources que je veux garder à portée de main dans l'Explorateur de solutions, tels que les autres fichiers de configuration pour différents environnements, mais je n'ai pas vraiment envie de les publier sur le serveur. Est-il un moyen de les exclure? Lors de l'utilisation d'autres types de projets, tels que un .dll assemblée, je peux définir un fichier de l'Action de Construire à la propriété "None" et sa Copie vers le Répertoire de Sortie à la propriété "Ne pas copier". Je ne trouve pas les paramètres similaires pour les fichiers dans un site web.

Si l'IDE n'offre pas cette fonctionnalité, quelqu'un aurait-il une bonne technique pour le traitement de ces fichiers?

141voto

Keith Points 5138

Vous pouvez exclure des fichiers et dossiers en modifiant le fichier de projet.

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> 
  ... 
  <ExcludeFilesFromDeployment>File1.aspx;Folder2\File2.aspx</ExcludeFilesFromDeployment> 
  <ExcludeFoldersFromDeployment>Folder1;Folder2\Folder2a</ExcludeFoldersFromDeployment> 
</PropertyGroup>

Voir le Déploiement sur le Web: à l'Exclusion de Fichiers et de Dossiers via l'Application Web Fichier de Projet

34voto

Chris Hynes Points 5110

Si vous pouvez identifier les fichiers sur la base de l'extension, vous pouvez configurer ce paramètre à l'aide de la buildproviders balise dans le web.config. Ajout de l'extension et de l'associer à la ForceCopyBuildProvider. Par exemple, pour configurer .xml fichiers à copier avec la publication d'action, vous devez effectuer les opérations suivantes:

<configuration>...
    <system.web>...
        <compilation>...
            <buildProviders>
                <remove extension=".xml" />
                <add extension=".xml" type="System.Web.Compilation.ForceCopyBuildProvider" />
            </buildProviders>

Pour garder un fichier à partir de la copie, vous feriez la même chose, mais l'utilisation du Système.Web.La Compilation.IgnoreFileBuildProvider que le type.

11voto

BlackjacketMack Points 1057

J'ai vécu le même problème et enfin sur la gâchette sur la conversion du site web à une application web. Une fois que j'ai fait ceci, j'ai obtenu tous les IDE avantages tels que l'action de construire, et il a compilé plus rapide au démarrage (pas plus de la validation de site web...).

Étape 1: Convertir votre site web à un "web application". Convertir je viens de créer une nouvelle "application web", a emporté tous les fichiers qu'il a créés automatiquement, et copié et collé mon site web. Cela a bien fonctionné. Notez que les fichiers de rapport aurez besoin d'avoir leur Action de Construire ensemble au "Contenu" au lieu de "none".

Étape 2: Maintenant, vous pouvez définir tous les fichiers de Construire "Action" de la propriété.

Espérons que cette aide.

5voto

Kev Points 60744

Je pense que vous n'avez que deux options ici:

  • Utiliser le 'Exclure Du Projet' fonctionnalité. Ce n'est pas idéal parce que le un élément du projet seront exclus de toute IDE intégré de contrôle à la source des opérations. Vous devez cliquez sur " Tout Afficher Les fichiers " bouton sur la Solution de la fenêtre si vous avez besoin de voir les fichiers dans L'Explorateur de solutions, mais aussi affiche les fichiers et dossiers que vous n'êtes pas intéressé par.
  • Utiliser un post-construire un script d'événement à retirez tous les éléments du projet, vous n'avez pas voulez être publié (en supposant que vous êtes la publication d'un dossier local, puis télécharger vers le serveur).

J'ai vécu ça avant, et ne pouvais pas trouver quelque chose de vraiment élégant.

1voto

David Points 12145

La fonction vous êtes à la recherche existe si votre projet est conçu comme une "Application Web". Web Site "projets" sont simplement une collection de fichiers qui sont considérés comme 1:1 avec ce qui est déployé sur un serveur web.

En termes de fonctionnalité, les deux sont le même, cependant, une application web compile tout le code source d'une DLL, au lieu de le nu fichiers de code source en cours de copie sur le serveur web et compilé en tant que de besoin.

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