Exclure des fichiers du site Web de publication 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 à scope de main dans l’Explorateur de solutions, telles que des fichiers de configuration alternatifs pour différents environnements, mais je ne souhaite pas vraiment les publier sur le serveur. Y a-t-il un moyen de les exclure? Lorsque vous utilisez d’autres types de projet, tels qu’un assembly .dll, je peux définir la propriété Build Action d’un fichier sur «None» et sa propriété Copy to Output Directory sur «Do not copy». Je ne trouve aucun paramètre similaire pour les fichiers d’un site Web.

Si l’EDI n’offre pas cette fonctionnalité, est-ce que quelqu’un a de bonnes techniques pour gérer de tels fichiers?

Si vous pouvez identifier les fichiers en fonction de leur extension, vous pouvez les configurer en utilisant la balise buildproviders dans le fichier web.config . Ajoutez l’extension et mappez-la au ForceCopyBuildProvider. Par exemple, pour configurer des fichiers .xml à copier avec une action de publication, procédez comme suit:

... ... ...     

Pour empêcher la copie d’un fichier donné, vous devez faire la même chose, mais utilisez System.Web.Compilation.IgnoreFileBuildProvider comme type.

Vous pouvez exclure des dossiers et des fichiers en ajoutant des éléments ExcludeFilesFromDeployment et ExcludeFoldersFromDeployment à votre fichier de projet (.csproj, .vbproj, etc.). Ajoutez-les dans le PropertyGroup approprié, comme indiqué ci-dessous:

  ... File1.aspx;Folder2\File2.aspx **\.svn\**\*.* Folder1;Folder2\Folder2a  

Les caractères génériques sont pris en charge.

Dans l’exemple ci-dessus:

  • Le 1er ExcludeFilesFromDeployment exclut File1.aspx (dans la racine du projet) et Folder2 \ File2.aspx (Folder2 est à la racine du projet)
  • Le 2ème ExcludeFilesFromDeployment exclut tous les fichiers d’un dossier nommé .svn et de ses sous-dossiers
  • ExcludeFoldersFromDeployment exclut les dossiers nommés Folder1 (à la racine du projet) et Folder2 \ Folder2a (Folder2 est à la racine du projet)

Pour plus d’informations, voir Déploiement Web: exclusion de fichiers et de dossiers via le fichier de projet de l’application Web.

Étonnamment, la réponse à Visual Studio 2012 n’est pas ici:

  • La réponse avec une coche verte n’est pas la réponse.

  • La plus haute réponse “upped” fait référence à un article de 2010 et indique que vous devez modifier votre fichier de projet csproj, qui est désormais incorrect. J’ai ajouté l’élément XML ExcludeFoldersFromDeployment à mon fichier csproj Visual Studio 2012 et il n’a rien fait, l’élément a été considéré comme non valide, car ExcludeFoldersFromDeployment a été déplacé dans le fichier .pubxml auquel il ressemble.

Pour les applications Web et les sites Web, modifiez le fichier .pubxml!

Vous pouvez suivre ma réponse ou essayer ce guide que j’ai trouvé plus tard: http://www.leniel.net/2014/05/using-msdeploy-publish-profile-pubxml-to-create-an-empty-folder-structure- on-i-et-ignorer-supprimer-avec-msdeployskiprules.html # sthash.MSsQD8U1.dpbs

Oui, vous pouvez le faire non seulement pour les projets de site Web, mais aussi pour les sites Web. J’ai passé beaucoup de temps sur Internet à chercher cette possibilité d’exclusion insaisissable avec un site Web Visual Studio (projet NOT Website) et j’avais déjà conclu que ce n’était pas possible, mais il semble que ce soit:

Dans votre fichier [mypublishwebsitename] .pubxml, trouvé dans ~ / Properties / PublishProfiles pour les projets d’application Web et ~ / App_Data / PublishProfiles pour les sites Web, ajoutez simplement:

  File1.aspx;Folder2\File2.aspx Folder1;Folder2\Folder2a 

en tant qu’enfants à l’élément principal dans votre fichier .pubxml. Inutile d’append un nouvel élément, sauf si vous saisissez un type de construction spécifique, tel que release ou debug.

MAIS ATTENDEZ!!!

Si vous supprimez des fichiers de votre serveur de destination / cible avec le paramètre suivant dans votre configuration de publication:

entrer la description de l'image ici

Ensuite, le processus de publication Web supprimera sur votre serveur source / cible tout élément exclu, tel qu’un élément que vous avez délimité dans votre et !

MsDeploy Ignorer les règles à la rescousse:

Tout d’abord, Web Publish utilise autre chose que MSBuild à publier (appelé Task IO ou quelque chose comme ça), mais il a un bogue et ne reconnaîtra pas les règles de saut. Vous devez donc append à votre fichier .pubxml:

  MSDeploy  

Je conserverais dans son propre , vous pourriez penser que vous pourriez avoir un seul élément dans votre fichier .pubxml, mais que mes règles de saut ne sont appelées que lorsque j’ai déplacé vers son propre élément . Oui, c’est fou, mais le fait que vous deviez faire tout cela pour que Web Publish exclue et ne supprime pas non plus un dossier / fichier sur votre serveur est fou.

Maintenant, mes déclarations SkipRules, ExcludeFolders et ExcludeFiles dans mon fichier .pubxml:

 Config Photos Temp Web.config AddCustomSkipRules 

Et maintenant, un Skip Rules ( est un enfant de dans votre fichier .pubxml): ( Vous pourrez peut-être laisser vide à Skip pour toutes les actions mais je n’ai pas testé et je ne suis pas sûr .

      Delete dirPath $(_DestinationContentPath)\\Config     Delete dirPath $(_DestinationContentPath)\\Photos     Delete filePath $(_DestinationContentPath)\\Web\.config     Delete dirPath $(_DestinationContentPath)\\Temp      

Et s’il vous plaît, ne pas oublier d’échapper à la . dans un filePath Ignorer la règle avec une barre oblique inverse.

J’ai lutté contre le même problème et j’ai finalement déclenché la conversion du site Web en une application Web. Une fois que j’ai fait cela, j’ai eu tous les avantages de l’IDE tels que l’action de compilation, et il a été compilé plus rapidement pour démarrer (plus de site web de validation …).

Etape 1: Convertissez votre “site web” en une “application web”. Pour le convertir, j’ai créé une nouvelle “application web”, supprimé tous les fichiers créés automatiquement, copié et collé mon site Web. Cela a bien fonctionné. Notez que les fichiers de rapport doivent avoir leur action de création définie sur “Contenu” au lieu de “Aucun”.

Étape 2: Maintenant, vous pouvez définir tous les fichiers “Build Action” propriété.

J’espère que cela t’aides.

Dans Visual Studio 2013, j’ai trouvé que la réponse de Keith, en ajoutant l’élément ExcludeFoldersFromDeployment au fichier de projet, ne fonctionnait pas (je n’avais pas lu la réponse de Brian Ogden qui dit ceci). Toutefois, j’ai constaté que je pouvais exclure un fichier texte lors de la publication dans Visual Studio 2013 en définissant simplement les propriétés suivantes sur le fichier texte lui-même:

1) Action de construction: aucune

2) Copier dans le répertoire de sortie: ne pas copier

Au début, j’ai essayé de définir la propriété Copy to Output Directory par elle-même, mais cela ne fonctionnait pas lorsque l’action de génération était définie sur la valeur par défaut, Content. Lorsque je définis ensuite l’action de création sur Aucun, le fichier texte n’a plus été copié dans le dossier de destination lorsque j’ai publié.

Pour afficher ces propriétés dans l’interface graphique de Visual Studio, dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier à exclure et sélectionnez Propriétés dans le menu contextuel.

Je pense que vous avez seulement deux options ici:

  • Utilisez la fonctionnalité “Exclure du projet”. Ce n’est pas idéal car l’élément de projet sera exclu de toute opération de contrôle de source IDE intégrée. Vous devez cliquer sur le bouton “Afficher tous les fichiers” de la fenêtre Solution si vous devez voir les fichiers dans l’Explorateur de solutions, mais également les fichiers et dossiers qui ne vous intéressent pas.
  • Utilisez un script d’événement de post-génération pour supprimer tous les éléments de projet que vous ne souhaitez pas publier (en supposant que vous publiez dans un dossier local puis transférez sur le serveur).

J’ai déjà vécu ça et je ne pouvais rien trouver de vraiment élégant.

La fonctionnalité que vous recherchez existe si votre projet est créé en tant qu’application Web. Les «projets» de sites Web ne sont qu’un ensemble de fichiers considérés comme 1: 1 avec ce qui est déployé sur un serveur Web.

En termes de fonctionnalité, les deux sont identiques, mais une application Web comstack tout le code source dans une DLL, au lieu que les fichiers de code source nu soient copiés sur le serveur Web et compilés selon les besoins.

Pour Visual Studio 2017, WebApp Publish , créez d’abord un profil de publication de système de fichiers standard. Accédez au dossier App_Data \ PublishProfiles \ et modifiez le fichier [profilename] .pubxml.

Ajouter

 [file1.ext];[file2.ext];[file(n).ext] 

sous la balise Vous ne pouvez spécifier cette balise qu’une seule fois, sinon elle ne prendra que les dernières valeurs.

Exemple:

   FileSystem Release Any CPU  True True C:\inetput\mysite False web.config;mysite.sln;App_Code\DevClass.cs;   

Assurez-vous que la balise DeleteExistingFiles est définie sur False