11月 222013
 

参考:IISマネージャーからアプリケーションインポートしたら、アプリケーションプールのエラーが出た – minato128のブログ

まさにこれ。

  • msdeployはデプロイ先のアプリケーションプールの.NETバージョンとデプロイ対象アプリのバージョンが一致しているかチェックする
  • IISに4.5をインストールしていたとしても、設定できるのはv4.0
  • VS2010のtargetは4.5に対応していないのか、この状況ではエラーを吐いてデプロイできない

使用しようとしているアプリケーション プールでは、’managedRuntimeVersion’ プロパティが ‘v4.0’ に設定されています。このアプリケーションには ‘v4.5’ が必要です。

  • /t:Packageでデプロイパッケージを作る際のmsbuildオプションに/p:VisualStudioVersion=11.0 (2013は12.0なのかな?)をつければVS2012のtargetを使用するようになるらしく、エラーを吐かずに正常にデプロイ出来るようになる
7月 062012
 
問題

VisualStudioの「配置パッケージの作成」や、MSBuildのターゲットPackageで作成したデプロイパッケージは、同時に作成されるdeploy.cmdでデプロイすることが可能である。
方法: deploy.cmd ファイルを使用して配置パッケージをインストールする

これを用いる際、msdeployの追加フラグを指定することが可能だが、=を含むフラグ値を指定する場合は以下のように指定するようreadmeに注意書きがある。

注意: 次の例に示すように、等号 (=) を含む任意のフラグ値は二重引用符で囲む必要があります。これにより、パッケージに含まれるデータベースの配置がスキップされます:
“-skip:objectName=dbFullSql”

ところが、実際にこの通り指定するとエラーとなってしまう(少なくとも手元の環境では)。

エラー: 引数 ‘”-skip:objectName=dbFullSql”‘ を認識できません。引数はすべて “-” で始まります。
エラー数: 1。

解決策

上記リンクにある通り、フラグ値を_MsDeployAdditionalFlags環境変数に設定することで対応可能。

Web 配置 コマンドを、__MsDeployAdditionalFlags 環境変数を設定して指定することもできます。

SET _MsDeployAdditionalFlags=-skip:objectName=dbFullSql
example.deploy.cmd /T /M:hostname /U:UserName /P:Password