6

「Web Deploy Package」を使用して公開している VS2012 に Web アプリケーション プロジェクトがあります。このパッケージにアプリケーション プールの設定、具体的には IIS アプリケーション プールを作成し、新しく作成したアプリケーションをそれに割り当てることを含めたいと考えています。

プロジェクトが (IIS Express ではなく) IIS インスタンスを使用するように構成されている場合に使用できる [この Web プロジェクトで使用されるアプリケーション プール設定を含める] オプションについてはよく知っていますが、IIS 構成はプロジェクト ファイルの一部ではないため、ソースではありません。制御されます。IIS が細心の注意を払って構成されていないマシンで誰かが展開パッケージを構築するとどうなりますか? 理想的ではありません。

では、AppPool 設定を Web デプロイ パッケージに取り込むにはどうすればよいでしょうか? appPoolConfig プロバイダーが IIS7+ のみであることは理解していますが、その制限は問題ありません。私は過去にこの問題に頭を悩ませましたが、解決策は見つかりませんでした。18 か月後、VisualStudio の新しいバージョンと新しい web-publishing-pipeline を入手しましたが、これに対処する新しいオプションはありますか? それとも、この問題に最初に取り組んだときに見逃したものでしょうか?

編集

OK、次のオプションが表示されます。

  1. IIS インスタンスから設定を同期するようにプロジェクトを構成します。前述のように、プロジェクトの外部に設定を配置することを考えると、私はこれのファンではありません。つまり、ビルドと公開のために環境を細心の注意を払って構成する必要があります。さらに、含めたくない他のIIS設定に沿ってドラッグします。
  2. web-publishing-pipeline (WPP) に何かを挿入して、archive.xml を変更します。私は過去にこれをいじりましたが、成功は限られていました。1 つの問題は、パイプラインが archive.xml ファイルでの直接作業と正確に連携していないことです。もう 1 つの問題は、MSDeploy.MSDeployProviderOptionsBase64 でエンコードされたバイナリが含まれているように見えるような、より暗号化された属性が含まれていることです。そこに何を入れるかわかりません。
  3. 私が望むことを実行できる既存の「プロバイダー」を見つけます。私はここで運が悪いかもしれません.appPoolConfigプロバイダーは、設定のXMLファイルではなく、IISの読み取り/書き込みのみを望んでいるようです. 他に誰か知っていますか?
  4. マニフェスト出力エントリを生成する独自の「プロバイダ」を記述します。よくわかりませんが、既存のプロバイダーの名前を使用してマニフェストに書き込むカスタム プロバイダーを作成することは可能ですか? のように、セクションをマニフェストにMyCustomPoolProvider書き込みますか? appPoolConfigこれは、うまくいくかもしれないし、うまくいかないかもしれない、潜在的に痛みを伴う運動のように聞こえます. に入るもののエンコーディングを理解する必要がありMSDeploy.MSDeployProviderOptionsますか?

私が達成しようとしていることに対する Web Deploy の根本的な障害は、「プロバイダー」にどれだけ厳密に依存しているかということだと感じています。既存のプロバイダーは、主に IIS 同期用に設計されており、主要な開発および公開用ではありません。これらのプロバイダーの中には、MSBuild を介して比較的簡単に接続できるものもありますが、大部分は IIS からデータを取得することを主張しており、それだけです。

4

1 に答える 1

1

プロバイダーの理解は正しいです。appPoolConfigプロバイダーはアプリプール間でのみ同期でき、構成を直接提供することはできません。潜在的にできることは、問題のappPoolのコピーをpackageフォーム(つまりmsdeploy -verb:sync -source:appPoolConfig=PoolName -dest:package=apppool.zip)に保持し、パイプラインの乗っ取りを試みて、MSDeploy呼び出しがアプリケーションコンテンツをパッケージに追加し、既存のコンテンツをそこに残すことです。

または、パッケージを常に個別に保持し、MSDeployへの異なる呼び出しでそれらをデプロイすることもできます。

参考までMSDeploy.MSDeployProviderOptionsに、パッケージ化されたときにプロバイダーに提供されたパラメーターのエンコードされたバージョンです。たとえば-source:dirPath=c:\,ignoreErrors=0x10293847 -dest:package=package.zip、値をパッケージ化しignoreErrorsます。

于 2013-01-20T10:49:42.580 に答える