21

msdeploy (または必要に応じて Web デプロイ) を使用して、Web アプリをパッケージ化してデプロイします。パラメーター パッケージの時間を宣言することで、デプロイ時に値を提供できます (特に接続文字列を置き換えるため)。

現在直面している問題は、Web 構成の applicationSettings セクションの値を置き換えることです。置き換えたいコンテンツは属性値ではなく、xml 要素内のテキストであるため、msdeploy で値を置き換えることはできません (表示される警告は、「ノード タイプ 'Element' に値を設定できません」)。

関連する構成は次のようになります。

<applicationSettings>
  <Name.Of.Assembly.Properties.Settings>
    <setting name="someSetting" serializeAs="String">
      <value>I wanna be replaced</value>
    </setting>
  </Name.Of.Assembly.Properties.Settings>
</applicationSettings>

宣言パラメーター xml は次のようになります。

<parameter name="XX" defaultValue="default">
  <parameterEntry kind="XmlFile"
                       scope="Web\.config$"
                       match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value" />
</parameter>

msdeploy は属性値の置換のみをサポートしていますか、それとも何か間違っていますか?

4

1 に答える 1

44

後世に…

マッチの末尾に「/text()」を追加するだけです。これにより、タグで囲まれた値が変更されます。ただし、ソース web.config でこの値を空にすることはできません。そのため、"Release" ソリューション構成を使用して展開パッケージをビルドする場合、web.Release.config で設定のこの値を空の値に設定してはなりません。

<parameter name="XX" defaultValue="default">
  <parameterEntry kind="XmlFile"
                       scope="Web\.config$"
                       match="/configuration/applicationSettings/Name.Of.Assembly.Properties.Settings/setting[@name='someSetting']/value/text()" />
</parameter>
于 2010-12-22T05:19:18.690 に答える