10

ビルド/デプロイプロセスを自動化しようとしています。

これまで私が使用しているもの:

  • メインのWebアプリケーションプロジェクト(および依存プロジェクト)を備えたVisualStudio2010ソリューション
  • MSBuild
  • MSDeploy
  • CruiseControl.Net

そのため、多くのラングリングと歯ぎしりをした後、CCNetは、Webサイトを構築、パッケージ化、および展開するためのMSBuildスクリプトを開始しました。MSBuildスクリプトは次のとおりです。

<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.sln"
                    Targets="Clean;Rebuild"
                    Properties="Configuration=$(Configuration)"
    />
</Target>

<!--<Target Name="Test" DependsOnTargets="Build">
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web.Tests\Product.Web.Tests.csproj"
                    Properties="Configuration=$(Configuration);OutputPath=$(CCNetArtifactDirectory)\Tests\" />
    <Exec Command="$(MSTestPath) /testcontainer:$(CCNetArtifactDirectory)\Tests\Product.Web.Tests.dll /runconfig:$(CCNetWorkingDirectory)\src\Local.testsettings" ContinueOnError="false" />
</Target>-->

<Target Name="Package" DependsOnTargets="Build"> 
    <MSBuild Projects="$(CCNetWorkingDirectory)\src\Product.Web\Product.Web.csproj"
                    Targets="Package"
                    Properties="Configuration=$(Configuration);PackageLocation=$(PackageDir)\Product.zip"
    />
</Target>

<Target Name="Deploy" DependsOnTargets="Package">
    <Exec Command="&quot;$(MSDeployPath)&quot; -source:package='$(PackageDir)\Product.zip' -dest:auto,computerName='$(MSDeployComputerName)',includeAcls='False' -verb:sync -setParamFile:$(PackageDir)\Product.SetParameters.xml" ContinueOnError="false" />
</Target>

ターゲットマシンにIISで構成されたWebサイトが既に存在する限り、これはすべて正常に機能します。これは、既存の「実際の」サイトである必要はありません(シェルの場合もあります)。

これは素晴らしいことですが、Webアプリで実行できるように、MSDeployにWebサイトを自動的に作成してもらいたいと思っています。これは可能ですか?もしそうなら、どんな助けでも大歓迎です!

4

2 に答える 2

10

MSDeployには機能があり、適切なプロバイダーをフックするだけです。

たとえば、宛先で「auto」プロバイダーを使用している場合、これは基本的に、宛先がパッケージとして設定しているソースと同じ(または互換性がある)になることを示します。パッケージはホスティング環境を指定していないため、msdeployはそれを使って何もしようとはせず、基本的にパッケージからファイルをコピーするだけです。

あなたはautoを呼び出しています("-dest:auto"):

-dest:auto,computerName='$(MSDeployComputerName)'

msdeployでサイトを作成するには、「サイト」と「アプリ」の概念と、パッケージをWebサイト要素のコンテンツとして使用する方法を理解しているより具体的なプロバイダーを使用する必要があります。

私はしばらくこれを行っていないので、詳細をレイアウトしたくありません(おそらくあなたを間違って操縦するので)が、msdeployプロバイダーに関するMSDNドキュメントを見てください。

現在の設定であるautoを最初に見てください。次に、iisAppappHostconfigを見てください。

http://technet.microsoft.com/en-us/library/dd569040(WS.10).aspx

正しく使用すれば、これら2つのうちの1つがサイト/アプリを作成し、必要な結果が得られると思います。

于 2010-09-12T19:02:20.957 に答える
4

MSDeployがそれを行うことができないことはかなり確かです。私が過去に行ったことの1つは、Execタスクでappcmd.exeを呼び出して、新しいWebサイトを破棄/構築することです。MSBuild Community Tasksには、MSBuildExtensionPackと同様にいくつかのWebサイト機能があります。

于 2010-09-06T14:03:48.307 に答える