9
votes

ASP.NET web.config Transformation ne fonctionnera pas dans le programme d'installation

Je travaille sur un projet ASP.NET dans Visual Studio .NET 2010 et tente de créer un programme d'installation MSI à l'aide d'un projet de configuration Web. J'ai ajouté la production principale du projet (qui semble tirer dans les dépendances correspondantes) et les fichiers de contenu du projet (qui tire dans les fichiers web.config et les fichiers .svc).

Le problème est que plutôt que d'appliquer la transformation XDT et la création du web.config à l'aide du Web.Release.config, il copie simplement le web.config, le Web.Release.config et le web.debug.config dans l'installateur sans faire de transformation du tout.

Comment puis-je l'obtenir pour appliquer la transformation web.config avant de créer l'installateur?


0 commentaires

3 Réponses :


0
votes

Vous devez faire un projet de déploiement (je pense que ceci est un téléchargement séparé), puis votre projet de configuration Web prend la sortie précompilée du projet de déploiement en entrée. Une chose nette est que vous pouvez avoir un changement de section de votre web.config lors de sa construction.


1 commentaires

Cela pourrait être la réponse; Cependant, je n'ai pas de privilèges d'administrateur (comme il s'agit d'un ordinateur de travail), je ne peux donc pas le tester pour être sûr. \ J'ai fini par ajouter une entrée dans le fichier .csproj pour effectuer la transformation - je posterai le Détails bientôt.



1
votes

La réponse a fini par être située sur une autre fois que j'ai manqué quand je cherchais avant de demander que ce n'était pas exactement ce que je voulais:

Script MSBUILD et VS2010 Publier Appliquer Web .config transformer

Un collègue a suggéré d'utiliser cela pour placer le site Web transformé.Config dans le répertoire Bin et un projet de configuration Web configuré pour saisir le Web.config hors du répertoire des bacs et le mettre dans l'installateur. Cela a fini par être la solution la plus utilisable sans installer de compléments dans Visual Studio.


0 commentaires

18
votes

J'ai trouvé un Solution de contournement qui fonctionne pour moi:

  1. Créer des configurations nécessaires (dev, qa, production, etc.) et transformations de configuration Web associées. p> li>

  2. Utilisez le bloc-notes ou autre éditeur de texte et inclure la suite dans votre fichier de projet d'application Web (fichier .csproj) avant Tag (près de la fin du fichier de projet): P>

    <Target Name="AfterBuild">
      <TransformXml Source="Web.config" Transform="$(ProjectConfigTransformFileName)" Destination="Web.Transformed.config" />
    </Target>
    
  3. dans le projet de configuration Web: Sélectionnez Fichiers de contenu -> Exclure le filtre et ajoutez web.config (et tout autre Web. *. Fichiers de configuration contenant des règles de transformation). P> LI>

  4. dans le projet de configuration Web: Sélectionnez l'icône de l'éditeur de système de fichiers -> Dossier d'application Web -> Ajouter un fichier et sélectionnez Web.Transformed.Config dans la racine de votre dossier de projet d'application Web. P> LI>

  5. dans le même écran: clic droit web.transformed.config et renommez-le à web.config p> li> ol>

    Vous pouvez maintenant générer des fichiers .msi avec la configuration sélectionnée et le fichier root Web.config est transformé! Veuillez noter que cela n'affecte pas les fichiers web.config dans les sous-dossiers. P> p>


3 commentaires

Je peux confirmer que cette méthode fonctionne. Il est également détaillé à la fin de ce message: forums.asp.net/p/1596387/ 4050004.aspx


Dans le point 2, vous conseillez de ne pas ajouter web.transformed.config mais au point 4, vous demandez à ajouter un fichier web.transformed.config. Les deux points se contredisent mutuellement ou d'autre que je manque quelque chose. Quelqu'un peut-il m'aider à comprendre les étapes des détails.


@santoshkumarpatro La différence est le projet Web d'application Web par rapport au projet de configuration Web. Pour le point 2, vous voulez exclure web.transformed.config du projet d'application Web . Pour le point 4, vous voulez Inclure Web.Transformed.config dans le projet Web Configuration .