1. ホーム
  2. visual-studio

[解決済み] Visual StudioでWebプロジェクトでないプロジェクトのApp.Config変換は?

2022-03-17 12:42:45

質問

Visual Studio 2010のWebベースアプリケーションには、環境ごとに複数の設定ファイルを保持することができる設定変換機能があります。しかし、同じ機能は、Windowsサービス/WinFormsまたはコンソールアプリケーションのApp.Configファイルには使用できません。

回避策としては、こちらが参考になります。 App.ConfigにXDTマジックを適用する .

しかし、これは一筋縄ではいかず、いくつものステップが必要です。app.configファイルに対して同じことを実現する簡単な方法はないでしょうか?

どのように解決するのですか?

この記事で扱ったVisual Studio AddInで動作するようになりました。 SlowCheetah - Web.config 変換構文があらゆる XML 設定ファイルに対して一般化されました。 .

<ブロッククオート

web.configを右クリックして、"Add Configをクリックします。 Transforms.quot;を実行すると、web.debug.config と web.release.config。web.whatever.configは好きなように作ってください。 コンフィギュレーション・プロファイルと名前が一致している限りは。これらのファイル の完全なコピーではなく、変更したい部分のみです。 web.config。

web.configを変換するのに、XSLTを使いたいと思うかもしれません。 直感的には正しいように感じますが、実際には非常に冗長です。

ここでは、XSLTを使用した変換と、同じものをXML Document Transformの構文/名前空間。すべてのことに言えることですが XSLTでこれを行うには複数の方法がありますが、一般的な考え方はご理解いただけると思います。XSLT は一般的な木構造変換言語であるのに対し、この展開では は、一般的なシナリオの特定のサブセットに対して最適化されています。しかし 各XDT変換は.NETプラグインなので、自分で作ることができます。 を作成します。

<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="@*|node()">
  <xsl:copy>           
    <xsl:apply-templates select="@*|node()"/>
  </xsl:copy>
</xsl:template>
<xsl:template match="/configuration/appSettings">
  <xsl:copy>
    <xsl:apply-templates select="node()|@*"/>
    <xsl:element name="add">
      <xsl:attribute name="key">NewSetting</xsl:attribute>
      <xsl:attribute name="value">New Setting Value</xsl:attribute>
    </xsl:element>
  </xsl:copy>
</xsl:template>
</xsl:stylesheet>

または、デプロイメントトランスフォームを使用して同じことを行うこともできます。

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
   <appSettings>
      <add name="NewSetting" value="New Setting Value" xdt:Transform="Insert"/>
   </appSettings>
</configuration>