2009-09-04 2 views
2

私は非常に単純なように思えるものを達成しようとしています。ワークフローを持つ状態マシンワークフローコンソールアプリケーションがあります。私はそれのカスタムアクティビティを作成しました。この活動は決して使用されません。ワークフローでこのアクティビティを使用したいだけですが、WF - 別のワークフローアクティビティライブラリでカスタムアクティビティを作成せずにカスタムアクティビティを使用するにはどうすればよいですか?

  1. ツールボックスには表示されません。
  2. ソリューションエクスプローラからワークフローデザイナにドラッグできません。

私は、自分のソリューションを混乱させるだけなので、絶対に別のステートマシンワークフローアクティビティライブラリを作成したくありません。私が言ったように、私は他のプロジェクトでこの活動を使うことは決してないので、私はそれをこのプロジェクトに限定しておきたいと思います...しかし、私はデザイナーにそれをどうやって手に入れるのか分かりません!私は夢中になっていますか?

public partial class GameSearchActivity: Activity 
{ 
    public GameSearchActivity() 
    { 
     InitializeComponent(); 
    } 

    public static DependencyProperty QueryProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Query", typeof(string), typeof(GameSearchActivity)); 
    [Description("Query")] 
    [Category("Dependency Properties")] 
    [Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public string Query 
    { 
     get 
     { 
      return ((string)(base.GetValue(GameSearchActivity.QueryProperty))); 
     } 
     set 
     { 
      base.SetValue(GameSearchActivity.QueryProperty, value); 
     } 
    } 

    public static DependencyProperty ResultsProperty = System.Workflow.ComponentModel.DependencyProperty.Register("Results", typeof(string), typeof(GameSearchActivity)); 
    [Description("Results")] 
    [Category("Dependency Properties")] 
    [Browsable(true)] 
    [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)] 
    public IEnumerable<Game_GamePlatform> Results 
    { 
     get 
     { 
      return ((IEnumerable<Game_GamePlatform>)(base.GetValue(GameSearchActivity.ResultsProperty))); 
     } 
     set 
     { 
      base.SetValue(GameSearchActivity.ResultsProperty, value); 
     } 
    } 

    protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext) 
    { 
     IDataService ds = executionContext.GetService<IDataService>(); 
     Results = ds.SearchGames(Query); 

     return ActivityExecutionStatus.Closed; 
    } 
} 

ありがとう:ここ

は、活動のためのコードです。


EDIT:

OK、私は、私はコンソールアプリケーションからのクラスライブラリにプロジェクトの種類を変更した場合、カスタムアクティビティがツールボックスに表示されていることを発見しました。しかし、これは受け入れられません。それはコンソール/ Windowsアプリケーションである必要があります。

誰もがこのことを知っていますか?

答えて

0

Visual Studioでバグを発見したようです。私はあなたがそれを動作させるためにハックすることができると確信していますが、それと一緒に行くと考え、クラスライブラリにワークフローのビットを保持し、単純なコンソールアプリケーションからそれらを参照しましたか?はい、これはEXEとDLLを作成しますが、これを行うコストは些細なものであり、実際にはレイヤーをよりよく分離し(UI対ビジネスロジック)、将来的にはより良い再利用が可能になります。

0

私はこの考えを確認することはできませんが、デザイナーのコードファイルに入り、手動で最小限のコードを挿入してから、デザイナーに戻ってそれがあるかどうかを確認しましたか?

デザイナーがXAMLまたはC#を作成しているかどうかは言わないが、XAMLでもそれを編集できるはずです。

0

あなたがしなければならないことは、プロジェクトをビルドすることだけです。コンパイルに成功すると、ツールボックスに表示されます。デザイナーは、最後の成功したビルドが何であってもアクティビティを読み込みます。

関連する問題