J'ai été à l'aide de config transforme en VS2010 un peu ces derniers temps mais je suis confus quant à pourquoi certaines transformations sont appliquées directement sur le Web.config dans le package, mais d'autres sont stockés à l'encontre d'un jeton dans SetParameters.xml ensuite appliquée sur publier.
Par exemple, prendre un site Web.config avec la chaîne de connexion suivante et app paramètre:
<connectionStrings>
<add name="AutoDeployDb" connectionString="Data Source=(local);Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=Passw0rd"/>
</connectionStrings>
<appSettings>
<add key="ChartImageHandler" value="storage=file;timeout=20;dir=c:\TempImageFiles\;" />
</appSettings>
Alors voici la configuration correspondante de transformation pour la génération en cours de configuration:
<connectionStrings>
<add xdt:Transform="Replace" xdt:Locator="Match(name)" name="AutoDeployDb" connectionString="Data Source=MyDevServer;Initial Catalog=AutoDeploy;User ID=AutoDeployUser;Password=s*#@Kdsl" />
</connectionStrings>
<appSettings>
<add xdt:Transform="Replace" xdt:Locator="Match(key)" key="ChartImageHandler" value="storage=file;timeout=20;dir=d:\inetpub\AutoDeploy\TempImageFiles\"/>
</appSettings>
Ce sont les deux "Remplacer" les transformations et les autres que l'un étant une chaîne de connexion correspondants sur "nom" et l'autre étant un des paramètres de l'application d'appariement sur "clé", à mes yeux, elles sont identiques.
Maintenant, regardez à l'intérieur de la SetParameters.xml fichier dans la résultante paquet et seulement la chaîne de connexion a un setParameter nœud. Dans le Web.config de la PackagTmp dossier, l'application paramètre de transformation a déjà été appliquée lors de la chaîne de connexion a un "$(ReplacableToken_AutoDeployDb-Web.config Connexion String_0)" la valeur qui est appliqué uniquement lorsque le programme est déployé.
Pourquoi est-ce? Est-il quelque chose de spécifique pour les chaînes de connexion (ou, à l'inverse, pour les paramètres de l'application)? J'apprécie la justification de cette approche, je ne suis pas clair sur pourquoi il est appliqué à certaines situations et pas dans d'autres.
Quelqu'un peut-il éclairer sur ce point?