いくつかの質問がありましたが、すべての記事を読んでください。どちらかが不足しているか、できません。公開時にASP.NETデプロイメントパラメータをオーバーライドする方法
私はかなり単純な(ASP.NET MVC)プロジェクトを持っています。これまでのところ
<?xml version="1.0" encoding="utf-8" ?>
<parameters>
<parameter
name="Realm"
description="Realm for ADFS authentication"
defaultValue="http://somewebsite">
<parameterEntry
kind="XmlFile"
scope="Web.config"
match="/configuration/appSettings/add[@key='ida:Realm']/@value" />
<parameterEntry
kind="XmlFile"
scope="Web.config"
match="/configuration/system.identityModel/identityConfiguration/audienceUris/add/@value" />
<parameterEntry
kind="XmlFile"
scope="Web.config"
match="/configuration/system.identityModel.services/federationConfiguration/wsFederation/@realm" />
とても良い:そこに私のプロジェクトのルートで は、次のような、パラメータ定義とparameters.xmlファイルです。この構造は非常によく理解されています。デプロイメントパラメータの名前(「Realm」など)、デフォルト値、Web.configファイルにあるXCLTオプションがあります。私が展開パッケージを作成するときに
は今、公開を実行して、私が含まれているディレクトリを取得:
- 自動展開
- readmeファイル
- マニフェストXMLファイルのCMDファイルを生成
- 私のサーバーに配備する必要のあるすべてのファイルを含むzipファイル。 A .SetParameters.xmlが最後のファイルは、私が上に引用parameters.xmlファイルに設定されたパラメータ値が含まれていることを
ファイル
レルムのデフォルト値が生成されたデプロイメントSetParameters.xmlで、http://somewebsiteに設定した場合、私はこのレコードを取得します:パッケージがデプロイされると
<setParameter name="Realm" value="http://somewebsite" />
、これらの値は、このXMLファイルから取得し、置き換えます元のparameter.xmlファイルで定義されているXPathに従って、私のWeb.Configの値。
ここで、私は、展開パッケージをビルドするときに、このパラメータをオーバーライドする必要があります。なぜなら、展開プロファイルごとに異なる値が必要なためです。
鍵は公開設定を担当する私の.pubxmlファイルのようです。 Sayed Hashimiが言ったように、私は多くのオプションを試しましたhere、前回の回答はhereとhere、here tooでした(他のものも)...何も気になるパラメータの違いを作るようです!
何か不足していますか?いくつかの魔法のハックはありますか?
paramsを完全に無視して、一致するweb.config変換のみに依存する必要がありますか?その他のアドバイスは?おそらく.csprojファイルにカスタムターゲットを追加しますか? (それも試しました...)
ありがとう! Alon。
ありがとう!私は作業を減らし、既存のツールを使用してプロセスを自動化しようとしています。 パブリック値のセットをパブリッシングプロファイルにバインドする方法はありません(msdeploy/buildの外で手作業を追加しない限り)。 これまでの唯一の回避策は、公開プロファイル名と一致するweb.config変換を作成することです。ビルド時にはweb.configは変更されませんが、生成されたデプロイメントパッケージでのみ変更されます。デプロイメント環境(例えば、異なるauthモードの異なるConfigSections)に従ってconfigを実際に変更できるので、もっと強力です。 – alrotem
ビルドプロセスでデプロイする場合は、configトランスフォームが最適です。ただし、これにより、各環境配備用にビルドする必要があります。これにより、誰かがビルド間の新しい変更をチェックし、未テストのコードを上位環境に導入するリスクが高まります。がんばろう! – chief7
ありがとう、もう一度@ chief7。 私はこれよりも経験が豊富だと思われるので、SetParameters.DEV.xmlの内容で(展開cmdファイルの隣の)展開フォルダ内のSetParameters.xmlファイルをオーバーライドしたいとします値は展開時に適用されます)、PowerShellスクリプトについて言及しますが、これはコピー/適用/実行方法ですか?展開パッケージが作成されたときに.pubxmlファイルから何とか自動化できますか? パブリッシングプロファイルごとにparameters.xmlファイルの "デフォルト値"をオーバーライドする必要があるのは、何とか手動で行う必要があるということです。 – alrotem