2011-02-10 12 views
38

私は、Hudsonを使用してコマンドライン経由で構築しているVisual Studio 2010 MVC2 Webアプリケーションを持っています。私はHudsonにWeb出力を公開させたいので、DeployOnBuild = trueとCreatePackageOnPublish = Trueタグをコマンドラインに追加しました。MSBuild DeployOnBuild = true not publishing

私のコマンドは次のとおりです。

C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe 
    /target:Clean,Build 
    /property:Configuration=Debug;DeployOnBuild=True;CreatePackageOnPublish=True; 
    [my project name.csproj] 

が正常\obj\Debug\Package\PackageTmp\へのWeb出力を発行し、私の開発マシン(Windows 7の)でこのコマンドを実行します。しかし、それをHudsonサーバー(WS 2008)で実行すると正常にコンパイルされますが、公開はしません。同じコマンド、同じバージョンのMSBuild、同じソースコード。

私は/t:Publishターゲットを試しました。これは、他の人の投稿を見ているように、私にはスキップしているプロジェクトのレスポンスをスキップしています。

私は自分のプロジェクトだけでなく、ファイル、および変更なしにDeployOnBuild=TrueCreatePackageOnPublish=Trueタグを追加しようとしました。

これが公開していない理由についてのご意見はありますか?これらのタグを間違って使用していますか?私はここには私が見ていない何かがあると確信しています。

+2

あなたはこれを理解しましたか?私は今、同じ壁にぶつかっています。 –

+0

私はTeamCityを新しいサーバーに移しました。すべてのWebアプリケーション成果物は、50以上のプロジェクトのためにemtpy zipでした。通常のサービスとテストアプリは細かくアーチファクトされました.24時間以上この正確な問題を解決しようとしていました;( – ppumkin

答えて

37

のように見えますがはないがあなたのハドソンサーバー上にインストールされているVisual Studio 2010のを持っていないあなたは、それはあなたが出版「目標」ファイルが欠落していることかもしれ仮定します。ヘッドとデスクの激しい打撃の後、私はついにこれを解決しました。私はディレクトリをコピーするために必要なことを私は知っているかなり長い間

C:\プログラムファイル(x86の)\ MSBuildの\マイクロソフト\ VisualStudioを\ V10.0 \ webアプリケーション

VS2010を使用している私のローカルマシンから私のサーバーにプロジェクトを取得するためにをビルドします。 \プログラムファイル(x86の)\ MSBuildの\マイクロソフト\ VisualStudioを\ V10.0の\ウェブ

:しかし、プロジェクトはまた私もディレクトリ

Cをコピーするために必要なを公開するために取得します注:私のケースでは、実際に私のソースコントロールにそれらのフォルダをコミットして、これらのチェックアウトされたフォルダを指すように(つまり、サーバーを準備するときに1つのステップが少なくなるように)csprojファイルの<MSBuildExtensionsPath32>の値を変更します。これを有効にする必要はありませんが、問題を解決した後にこれを検討することをお勧めします。

更新:私が上記を行った後、ビルドは "Microsoft.Web.Deployment.dll"が見つからないと訴えました。これを解決するには、というファイルシステムにしか公開していないのに、をサーバにインストールする必要がありました。私はこれで論理を見ることができると思います。

更新:IIS Web Platform Installerを使用して「Visual Studio 2010 Shell(Integrated)」をインストールすると、必要なビルドターゲットがインストールされることがわかりました。これは、Visual Studioアプリケーション全体をあなたのサーバにインストールしておかないと、あなたのdevマシンからサーバに任意のフォルダを手作業でコピーしてしまうのではなく、いい妥協のようです。

+1

既にこれを行って、私はまだ同じ結果を得ています。 DeployOnBuildはまだ無視されています。 –

+0

私はWeb Deploy 3.0 RCを試してみました。ありがとう –

+0

アップデートはもはや真ではありません。VS 2013シェル(統合版)をインストールしても、MSBuildインストールの下で必要な「Web」フォルダは提供されません。 –

3

公開ターゲットを実行する条件が満たされていないようです。 DIAG:

1)あなたは、ターゲットを公開し実行するために別の出版パス

2)の条件を持つことができますが

は、それらの両方がフラグ/Vを使用してコマンドを呼び出す確認するにはfalseです。検索:"公開"をターゲットにして、実際に何が起こるか把握してみてください。それは

Target "ExecuteT4Templates: (TargetId:144)" in file "D:\App\App.csproj" from project "D:\App\App.csproj": 
Skipping target "ExecuteT4Templates" because all output files are up-to-date with respect to the input files. 
Input files: D:\App\App.exe\\App_Config\Configuration.tt;D:\App\App.exe\\App_Config\Debug.App.tt;obj\\Debug.t4lastbuild 
Output files: D:\App\App.exe\\App.config 
Done building target "ExecuteT4Templates" in project "App.csproj".: (TargetId:144) 
+1

/v:diagのアイデアをありがとうございました。私たちは近づいていると思います。 パッケージの展開が成功しても「パブリッシュ」ターゲットがヒットしています。2つの出力が異なる最初の表示は、動作するマシン上では次の設定が挙げられます。出力:?DIAG:この前 _CreatePackage = Trueの _DeployOnBuild = Trueの _PackageTempDir = OBJ \デバッグ\パッケージ\ PackageTmp 、2つの出力間に有意差これらの設定を打つための条件上の任意のアイデア – Thomas

+0

/vが存在しません間違いなく助けてください私はその問題にもっと近づきました... – Ewert

1

VS2012でこれを実行していましたが、ビルドサーバーにWeb開発ツールをインストールして修正しました。

+4

このWeb develoeprのツールは、まさにあなたが話しているものですか? – iwo

+0

VSインストールメニューのウェブ開発ツールです –

1

また、Brian Hincheyの回答に加えて、ビルドエージェント(私の場合はTeamCity)の正しいバージョンとパスをMicrosoft.WebApplicationに追加するために、msbuildバッチコールに追加のパラメータVisualStudioVersionを追加する必要があることがわかりました.targetsが呼び出されます。 このパラメータがないと、Webデプロイおよびパブリッシュのステップが完了せず、バッチが正常に完了してコード0が返され、/ verbosityフラグをビルドの 'debug'に追加しても解析が非常に困難になります。 この点は彼のサイトでサイードイブラヒムHASHIMIによって構成されています http://sedodream.com/2012/08/19/VisualStudioProjectCompatabilityAndVisualStudioVersion.aspx

私の場合のシナリオは(私はVS2010または2012年にプロジェクトを開くことができるように私は私のMVC Webプロジェクトで有効になってVisual Studioの互換性を持っていたということでした上記のリンクのSayedのように) - 私はVS2012でローカルに開発していますが、TeamCityビルドエージェントにはVS 2010のWebビルドと展開のターゲットがあります。

関連する問題