2011-06-17 17 views
2

私は、ASP.NETアプリケーションと密接に関連しているClickOnce WPFアプリケーションを持っています。 ASP.NETアプリケーションは特定の時点でClickOnceアプリケーションを起動し、ClickOnceアプリケーションはASP.NETアプリケーションのサブフォルダに展開されます。Visual Studioでビルドが完了したらClickOnceを自動的に公開

私はこれをすべて実行しており、ClickOnceファイルを更新するために自動ビルドを行うときに/ target:publishスイッチを使用できることを理解しています。しかし、これは開発者の経験に私を助けません。

現時点では、開発者がWPFアプリケーションを変更してWebアプリケーションで実行すると、ローカルで再度手動で公開する必要があるため、WPFアプリケーションで変更が表示されません。

Visual Studioの内部でClickOnceアプリケーションを再パブリッシュするようにパブリッシュ動作を呼び出す方法はありますか?

注:WPFアプリケーションのポストビルドステップで「msbuild/target:publish」を入れてみましたが、ポストビルドステップを呼び出すポストターゲットが実際に再ビルドを行うため、これは無限ループとなりました。

+0

1回のビルドのたびにアプリケーションを公開したい理由は何ですか?開発者がアプリケーションをすぐに再公開するという考えを持っていない場合、テスト目的でアプリケーションを単に再構築している可能性はありますか? – RLH

+0

すべてのビルド後に公開したくありません。理想的には、WPFアプリケーションが変更されたときに公開したいと考えています。私がWPFアプリケーションを使って変更/テスト/変更サイクルを繰り返すと、Webアプリケーションを介して実行するために絶えず公開する必要があります。ウェブアプリケーションはURLパラメタをプログラムに渡します。そのため、特定のシナリオで実際にテストするには、そのコンテキストで実行する必要があります。 – RationalGeek

答えて

5

次のようにファイルMicrosoft.Common.targets(v4.0.30319 x64の)では、公開対象が定義されている:

<PropertyGroup> 
    <PublishDependsOn Condition="'$(PublishableProject)'=='true'"> 
     SetGenerateManifests; 
     Build; 
     PublishOnly 
    </PublishDependsOn> 
    <PublishDependsOn Condition="'$(PublishableProject)'!='true'"> 
     _DeploymentUnpublishable 
    </PublishDependsOn> 
</PropertyGroup> 
<Target 
    Name="Publish" 
    DependsOnTargets="$(PublishDependsOn)"/> 

公開が既にちょうどがでターゲットを公開呼び出し、ビルドに依存しているのでAfterBuild(またはそのターゲットの依存関係のリストに追加する)機能しません。

しかし、以来はちょうどその依存関係を指定することで、操作の順序を定義して公開し、あなたはビルドの依存関係に発行ターゲットの依存関係を追加することにより、すべてのビルド後にソリューションを公開するには、Visual Studioのを得ることができます。 WPFアプリケーションの.csproj(または.vbproj)ファイルの最後に次の行を追加するだけです。依存関係はの後にMicrosoft.CSharp.targets(Microsoft.Common.targetsを含む)を含むの後に変更する必要があることに注意してください。

<PropertyGroup> 
    <BuildDependsOn> 
    SetGenerateManifests; 
    $(BuildDependsOn); 
    PublishOnly 
    </BuildDependsOn> 
</PropertyGroup> 

あなたが唯一のいくつかでは、この設定を上書きしたい場合は、ちょうどこのPropertyGroupに適切なConditionを追加し、構築します。

関連する問題