2009-04-15 12 views
2

ビルドするたびに私のアプリケーションのベータ版を公開したいので、ユーザーは一般的なリリースの前に「ベータ版」のバージョンにアクセスし、機能をテストすることができます。ClickOnceアプリケーションのベータ版を公開するにはどうすればよいですか?

[product] -betaを実行しているときにProductNameをオーバーライドしてこの処理を試みました。問題はPublishプロセスがまだ[製品]アプリケーションを作成することであり、ClickOnceの魔法はあるURLの[製品]アプリケーションと別のURLの[製品]アプリケーションの違いを知らないようです。

どうすればこの問題を回避できますか?

答えて

4

私は非常に似た問題に遭遇しました。ここで私が思いついた解決策があります。

すべての私のGUIフォームを、メインの起動フォームを含むDLLに入れました。その後、私のGUI dllを参照する2つのEXEプロジェクトを作成しました。 1つはProductという名前ともう1つはProductBetaです。
EXEのコードは、両者でほぼ同じです。つまり、Application.Run(新しいMainForm())です。

次に、同じ共有のサブディレクトリに公開するように設定しました。

これは面倒でオーバーヘッドは少しありますが、結果は非常にうまく機能します。

1

あなたが発見したように、製品名を変更するだけでは不十分です。アセンブリ名を変更する必要があります。 http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx

から

詳細は、最も重要なことは、複数の環境のために サポート持っている - これは内蔵されていない を、そしてあなた二つの異なる のClickOnceを展開する 試みは同じ 展開を構築している場合 最新のビルドが優先されて になり、既存のデスクトップ上の の展開を上書きすることになります。

この修正は比較的簡単です - の異なる配備名を ビルドごとに提供する必要があります。これと同じように -

<MSBuild 
    Projects="ClickOnce.csproj" 
    Targets="Publish" 
    Properties=" 
      MinimumRequiredVersion=$(MinimumRequiredVersion); 
      ApplicationVersion=$(ApplicationVersion); 
      ApplicationRevision=$(ApplicationRevision); 
      CodeBranch=$(CodeBranch); 
      DeployEnv=$(DeployEnv) 
      AssemblyName=ClickOnce.$(DeployEnv); 
      PublishUrl=$(PublishUrl); 
      ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" /> 

このアプローチの一つの制限は、そのプロジェクトの参照がしなくなり 仕事 です。ファイルベースのアセンブリ参照、 を使用して、それはうまくいくでしょう。

関連する問題