2009-09-04 80 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; 
    } 
} 

感謝。


編輯:

OK,所以我發現,如果我從控制檯應用程序更改項目類型爲類庫,自定義活動出現在工具箱中。但是,這是不可接受的。它需要是一個控制檯/ Windows應用程序。

任何人都知道解決這個問題的方法?

回答

0

看起來您已經發現了Visual Studio中的一個錯誤。我敢肯定,你可以破解它使其工作,但是,你是否考慮過使用它並將工作流位保存在類庫中,並從簡單的控制檯應用程序引用它們?是的,這會創建一個EXE和一個DLL,但這樣做的代價很小,實際上可以更好地分離各個層(UI與業務邏輯),並且可以在未來實現更好的重用。

0

我離開我的機器,所以我無法檢查這個想法,但是您是否嘗試過進入設計器的代碼文件並手動插入最小代碼,然後返回設計器以查看它是否存在?

您還沒有說過是否讓設計人員創建XAML或C#,但即使是XAML,也應該能夠編輯XML來完成此操作。

0

您只需構建項目即可。如果編譯成功,它應該顯示在工具箱中。設計師只會讀取上一次成功構建的活動。

相關問題