2017-10-16 6 views
0

J'ai une "solution" Visual Studio qui contient un projet d'application Web (parmi quelques autres projets). La configuration «typique» de Visual Studio semble être d'insister sur le fait que le répertoire de sortie pour les binaires est situé à la racine du répertoire source du projet. En particulier, à chaque ouverture du projet d'application Web, Visual Studio réinitialise le chemin physique du répertoire virtuel IIS pour qu'il pointe vers le répertoire du projet.Empêcher Visual Studio de modifier automagiquement le chemin physique du répertoire virtuel IIS?

Cela pose un problème à plusieurs niveaux:

  1. Il est jamais sage de mélanger les répertoires de sortie binaire et les arbres source
  2. Si l'application Web est enterré profondément dans une hiérarchie de répertoires d'autres sources, où de nombreux projets produisent bibliothèques qui peuvent être utilisées comme bibliothèques de support dans l'application web, alors tous les autres projets supportant doivent avoir leurs répertoires de sortie binaires dans un répertoire bin un endroit non évident et non-sensuel quelque part dans l'arborescence des sources. Cette configuration VS "classique" n'a pas l'installation de votre application Web dupliquer la configuration "production" que vous obtiendriez d'une publication: il peut y avoir des fichiers dans votre arborescence source (un ancien fichier .js là-bas à partir d'une extraction de référentiel, par exemple) qui ne sont pas référencés dans vos projets, et ne figureraient donc pas dans le package publié de production, mais sont présents dans votre configuration de débogage.

Il est très possible et très facile de configurer tous les projets dans une solution Visual Studio pour créer un répertoire bin dans un sous-répertoire placé à l'extérieur de l'arborescence source. Il est également facile de s'assurer que la construction de l'application web place tout le contenu proprement dans ce répertoire. Il est également facile de configurer un répertoire virtuel IIS pour pointer vers ce répertoire de sortie de construction. Ensuite, Visual Studio, non annoncé et non sollicité, résiste en modifiant arbitrairement le répertoire physique de l'application IIS virtuelle configurée avec soin, pour pointer vers le milieu de l'arborescence des sources.

Comment ce comportement fou peut-il être arrêté? C'est à dire. Comment puis-je empêcher Visual Studio de réinitialiser automagiquement le chemin physique du répertoire Web virtuel chaque fois que le projet d'application Web est ouvert?

Cette question a été posée à plusieurs reprises ici sur Stack Overflow, mais je l'ai vu aucune vraie réponse:

La réponse à cette question (IIS8.5 is automatically changing Physical Path property) indique simplement comment contrôler l'ordre dans lequel Visual Studio fait son le rejointoiement.

Cette question et cette réponse (Visual Studio creating IIS virtual directories when solution opened) confirment simplement le comportement.

La réponse à cette question (Opening projects changes iis settings) est tout simplement fausse, tout comme certains des commentaires.

Ces questions (Visual Studio 2012 changes IIS application directory without asking), (Visual Studio changes local IIS configuration) n'ont aucune réponse. Fondamentalement, personne n'a dit qu'il ne peut pas être fait, mais personne n'a donné une solution décente non plus.

Répondre

1

J'ai mon application dans IIS pointé sur% SystemDrive% \ inetpub \ wwwroot \ web, et je voudrais qu'il reste ainsi. Comme d'autres, j'ai découvert que chaque fois que j'ouvrais la solution dans Visual Studio (j'utilise 2017), le chemin de l'application dans IIS était modifié pour pointer vers le chemin utilisé par Visual Studio.

J'ai apporté les modifications suivantes aux paramètres du projet (onglet Web) pour mon projet. Dans la section des serveurs, j'ai défini la liste déroulante sur "Hôte externe", puis j'ai entré l'URL du projet sous la forme https://localhost/web. Je suis maintenant capable d'ouvrir la solution dans VS sans mettre à jour le chemin dans IIS.